我有一个使用 Python 2.7/mod_wsgi 3.3 运行 Django 1.2.5 的 Django 站点。在大多数情况下,一切都很好,但似乎该网站完全随机地抛出错误。它们都以以下形式结束:
模板不存在:xxx
这些模板确实存在,当我输入导致异常的 URL 时,该 URL 似乎总是有效。但是,大约每 30 次页面浏览,就会引发一次此错误。
我发现这篇关于类似问题的帖子:http: //leequerv.blogspot.com/2009/11/re-settingspy-seems-to-be-cached-or_24.html但我只运行一个 Django 应用程序所以它没有t似乎直接申请。
我正在使用一些子域中间件,它根据我的站点的子域交换模板目录(即,如果没有子域,它使用常规模板目录,如果它有一个 m.xxx 子域,则使用我的移动模板目录)。除了这些零星的生产服务器错误之外,所有这些在我的开发服务器和生产服务器上都非常有效。当很多人使用该网站时,这是否可能会造成竞争条件?
你有什么想法可能导致它或我应该从哪里开始寻找?
编辑:
以下是切换模板目录的中间件代码部分:
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'
}
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