У меня есть сайт Django, работающий под управлением Django 1.2.5 с использованием Python 2.7 / mod_wsgi 3.3. По большей части все работает отлично, но кажется, что сайт выдает ошибки совершенно случайно. Все они заканчиваются в виде:
TemplateDoesNotExist: xxx
Эти шаблоны определенно существуют, и когда я набираю URL, который вызвал исключение, URL всегда работает. Тем не менее, примерно каждые 30 просмотров страницы, эта ошибка выдается.
Я обнаружил этот пост о похожей проблеме: http://leequerv.blogspot.com/2009/11/re-settingspy-seems-to-be-cached-or_24.html, но я запускаю только одно приложение Django, поэтому оно не применяется напрямую.
Я использую некоторое промежуточное программное обеспечение для поддоменов, которое меняет каталоги шаблонов в зависимости от поддоменов моего сайта (то есть использует обычные каталоги шаблонов, если нет поддоменов, и использует мои каталоги мобильных шаблонов, если у него есть поддомен m.xxx). Все это прекрасно работает, как на моем dev-сервере, так и на рабочем сервере, за исключением этих случайных ошибок рабочего сервера. Возможно ли, что это создает условия гонки, когда много людей используют сайт?
Есть ли у вас какие-либо идеи, что может быть причиной этого или где я должен начать искать?
Edit:
Вот часть кода промежуточного программного обеспечения, где переключаются каталоги шаблонов:
subdomain = getattr(request, 'subdomain', False)
if subdomain is not False:
try:
request.urlconf = settings.SUBDOMAIN_URLCONFS[subdomain]
except KeyError:
pass
try:
settings.TEMPLATE_DIRS = settings.SUBDOMAIN_TEMPLATE_DIRS[subdomain]
except KeyError:
pass
Вот часть моего файла настроек, которая содержит информацию о директории шаблона:
SUBDOMAIN_URLCONFS = {
None: 'my_site.urls',
'm': 'mobile.urls'
}</p>
<pre><code>JQM_TEMPLATE_DIRS = (
os.path.join(PROJECT_DIR, "templates/mobile/"),
)
SUBDOMAIN_TEMPLATE_DIRS = {
None: TEMPLATE_DIRS,
'm': JQM_TEMPLATE_DIRS
}
Редактировать # 2 :
Вот мой след:
Traceback (most recent call last):
File "/home/my_username/webapps/my_site/lib/python2.7/django/core/handlers/base.py", line 100, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/home/my_username/python-environments/my_site/lib/python2.7/site-packages/endless_pagination/decorators.py", line 55, in decorated
return view(request, *args, **kwargs)
File "/home/my_username/webapps/my_site/my_site/local_apps/team/views.py", line 68, in team_detail
return render_to_response(template, context, context_instance=RequestContext(request))
File "/home/my_username/webapps/my_site/lib/python2.7/django/shortcuts/__init__.py", line 20, in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
File "/home/my_username/webapps/my_site/lib/python2.7/django/template/loader.py", line 181, in render_to_string
t = get_template(template_name)
File "/home/my_username/webapps/my_site/lib/python2.7/django/template/loader.py", line 157, in get_template
template, origin = find_template(template_name)
File "/home/my_username/webapps/my_site/lib/python2.7/django/template/loader.py", line 138, in find_template
raise TemplateDoesNotExist(name)
TemplateDoesNotExist: team_detail.html