我有一個使用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