Estoy usando el entorno de desarrollo de Windows Launcher para Google App Engine.Google App Engine con Django 1.1 local obtiene fallas intermitentes
He descargado Django 1.1.2 fuente, y poco tarrred el subdirectorio "Django" vivir dentro de mi directorio de la aplicación (un compañero de app.yaml)
En la parte superior de cada fichero fuente .py, hago esto:
import settings
import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'settings'
en mi settings.py archivo (que vive en la raíz del directorio de aplicación, también), hago esto:
DEBUG = True
TEMPLATE_DIRS = ('html')
INSTALLED_APPS = ('filters')
import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'settings'
from google.appengine.dist import use_library
use_library('django', '1.1')
from django.template import loader
Sí, esto parece un poco Exageración, ¿no? t?
Solo uso django.template. No utilizo explícitamente ninguna otra parte de django.
Sin embargo, de forma intermitente puedo obtener uno de los dos errores:
1) Django se queja de que DJANGO_SETTINGS_MODULE no está definido.
2) Django se queja de que common.html (una plantilla que extiendo en otras plantillas) no existe.
95% de las veces, estos errores no se encuentran, y al azar comienzan a suceder. Una vez en ese estado, el servidor local parece "encajado" y volver a arrancarlo generalmente lo arregla.
¿Qué está causando esto y qué puedo hacer al respecto? ¿Cómo puedo depurarlo?
Aquí es el rastreo del error:
Traceback (most recent call last):
File "C:\code\kwbudget\edit_budget.py", line 34, in get
self.response.out.write(t.render(template.Context(values)))
File "C:\code\kwbudget\django\template\__init__.py", line 165, in render
return self.nodelist.render(context)
File "C:\code\kwbudget\django\template\__init__.py", line 784, in render
bits.append(self.render_node(node, context))
File "C:\code\kwbudget\django\template\__init__.py", line 797, in render_node
return node.render(context)
File "C:\code\kwbudget\django\template\loader_tags.py", line 71, in render
compiled_parent = self.get_parent(context)
File "C:\code\kwbudget\django\template\loader_tags.py", line 66, in get_parent
raise TemplateSyntaxError, "Template %r cannot be extended, because it doesn't exist" % parent
TemplateSyntaxError: Template u'common.html' cannot be extended, because it doesn't exist
Y edit_budget.py comienza con exactamente las líneas que incluía hasta la parte superior.
Todas las plantillas viven en un directorio llamado "html" en mi directorio raíz, y "html/common.html" existe. Sé que el motor de plantillas los encuentra, porque empiezo con "html/edit_budget.html" que extiende common.html.
Parece que el módulo de configuración de alguna manera no se aplica (porque eso es lo que agrega html a la ruta de búsqueda de plantillas).
¿Puedes confirmar que el archivo settings.py que muestras es siempre el que se está importando? Alguna variación de sys.path (posiblemente causada por PYTHONPATH en el entorno?) Tal vez explique las diferencias de comportamiento (a través de la importación de una configuración "incorrecta"). –
No configuro PYTHONPATH. Y, el problema es que funciona bien para las primeras 10-20 solicitudes. Luego se "acuña", y cuando se "acuña", nunca se recupera. Debido a que esto ocurre durante el desarrollo, los manejadores lanzan a veces, aunque capturo todas las excepciones e imprimo un código de diagnóstico + resultado, por lo que las excepciones no aparecen hasta el tiempo de ejecución de WSGI. Me pregunto qué podría hacer que deje de funcionar repentinamente. –
Entonces, por ejemplo, una posible causa podría ser el recargador automático en el entorno de desarrollo. ¿Hay algún problema conocido allí? ¿Algo a tener en cuenta? –