我有一个使用Python 2.7/mod_wsgi 3.3运行Django 1.2.5的Django站点。大多数情况下,一切都很好,但是看起来网站总是随机抛出错误。他们都最终形式:随机Django TemplateDoesNotExist错误
TemplateDoesNotExist:XXX
这些模板肯定是存在的,而当我在那个导致异常的URL似乎总是工作输入URL。但是,一旦大约每30页浏览一次,就会抛出这个错误。
我发现这个职位关于类似的问题:http://leequerv.blogspot.com/2009/11/re-settingspy-seems-to-be-cached-or_24.html但我只运行一个Django应用程序,所以它似乎并不直接适用。
我正在使用一些子域中间件,根据我的网站的子域交换模板目录(即,如果没有子域,它使用常规模板目录,如果它有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
当这个异常是Raise你得到一个错误页面,或者页面仍然呈现?如果它是第二选择,那么也许我只是猜测它是django缓存(如果你使用其中一个),当它在缓存中找不到模板时可能会抛出此错误(因为缓存超时或什么所以永远),然后从文件系统获取模板来渲染它,所以它的工作,但它显示错误,因为缓存MISS!? – mouad 2011-03-19 16:36:53
请问我们有更详细的回溯吗? – pyeleven 2011-03-19 16:56:42
当引发异常时,应用程序崩溃,并且我的服务器显示默认的500内部服务器错误页面。它甚至不会提供正常的django 500.html页面,因为它无法找到该模板目录。 – Spike 2011-03-19 16:58:02