Używam środowiska programistycznego Windows La dla Google App Engine.Google App Engine z lokalnym Django 1.1 przechodzi przerywane awarie
Pobrałem Django 1.1.2 źródło i un-tarrred podkatalog "Django" żyć w moim katalogu aplikacji (peer z app.yaml)
Na górze każdego pliku źródłowego .py, I to zrobić:
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
Tak, to wygląda trochę jak:
import settings
import os
os.environ["DJANGO_SETTINGS_MODULE"] = 'settings'
W moim settings.py pliku (który mieszka w katalogu głównym aplikacji, jak również), to zrobić przesada, nie t?
Używam tylko django.template. Nie używam jawnie żadnej innej części django.
Jednak sporadycznie uzyskać jeden z dwóch błędów:
1) Django narzeka, że DJANGO_SETTINGS_MODULE nie jest zdefiniowana.
2) Django skarży się, że common.html (szablon, który rozwijam w innych szablonach) nie istnieje.
95% czasu, te błędy nie są napotykane, a losowo po prostu zaczynają się dziać. Po przejściu w tym stanie serwer lokalny wydaje się "zaklinowany", a jego ponowne uruchomienie zazwyczaj go naprawia.
Co powoduje to i co mogę z tym zrobić? Jak mogę to debugować?
Oto traceback z błędem:
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
I edit_budget.py rozpoczyna się dokładnie w tych liniach, że zawarte w górę szczyt.
Wszystkie szablony żyją w katalogu o nazwie "html" w moim katalogu głównym, a "html/common.html" istnieje. Wiem, że silnik szablonowy je znajduje, ponieważ zaczynam od "html/edit_budget.html", który rozszerza common.html.
Wygląda na to, że moduł ustawień w jakiś sposób nie jest zastosowany (ponieważ to właśnie dodaje kod HTML do ścieżki wyszukiwania szablonów).
Czy możesz potwierdzić, że plik settings.py, który pokazujesz, jest zawsze tym, który jest importowany? Pewna odmiana sys.path (prawdopodobnie spowodowana przez PYTHONPATH w środowisku?) Może być może wyjaśnić różnice w zachowaniu (poprzez import "niewłaściwego" ustawienia settings.py). –
Nie ustawiam PYTHONPATH. Problem polega na tym, że działa poprawnie w przypadku pierwszych 10-20 żądań. Potem "klnie", a kiedy "klina", nigdy się nie regeneruje. Ponieważ jest to podczas programowania, moduły obsługi niekiedy rzucają, chociaż wychwytuję wszystkie wyjątki i drukuję kod diagnostyczny + wynikowy, więc wyjątki nie pojawiają się w środowisku wykonawczym WSGI. Zastanawiam się, co może spowodować, że nagle przestanie działać? –
Na przykład jedną z możliwych przyczyn może być automatyczne ładowanie w środowisku programistycznym. Czy są tam jakieś znane problemy? Masz na co zwrócić uwagę? –