2016-12-01 10 views
0

У меня есть приложение, которое развернуто на 15 сайтах и ​​работает в течение 6 лет. Все эти развертывания - с django 1.5, python 2.6, CentOS6 и apache, и все они работают отлично. Я только что развернул приложение на новом сайте, но это django 1.9, python 2.7, CentOS7 и nginx/uwsgi. Только на этом сайте мы видим прерывистые ошибки «шаблон не найден». Обновление страницы всегда работает. Это происходит с разными шаблонами, и в любом из журналов ошибок нет (кроме ошибки, не найденной шаблоном). Я проверил системные журналы, журналы nginx, журналы uwsgi и журналы django.Django: Intermittent 'шаблон не найден'

Кто-нибудь знает, почему это происходит, и/или как я могу отладить его дальше?

Одна вещь, которую я заметил, и это может быть нормально, но я не знаю, поскольку я никогда не сталкивался с этой ошибкой раньше, заключается в том, что в шаблоне не найдена ошибка, когда она перечисляет каталоги, которые она искала, все они в/tmp. Например, если шаблон находится в /usr/local/foo/bar/templates/baz/template.html, путь поиска в ошибке будет иметь/tmp/foo/bar/templates/baz. Это какие-то признаки проблемы?

Более подробную информацию по запросу:

Ошибка:

TemplateDoesNotExist at /report/CDSEM/WaferToWafer/ 

WaferToWafer/view.html 

поиск шаблона:

Template-loader postmortem 

Django tried loading these templates, in this order: 

Using engine django: 

django.template.loaders.filesystem.Loader: /usr/local/motor/motor/ui/templates/WaferToWafer/view.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /usr/lib/python2.7/site-packages/django/contrib/admin/templates/WaferToWafer/view.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /usr/lib/python2.7/site-packages/django/contrib/auth/templates/WaferToWafer/view.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /tmp/core/alerts/templates/WaferToWafer/view.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /tmp/core/reports/templates/WaferToWafer/view.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /tmp/app/cdsem/templates/WaferToWafer/view.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /tmp/app/semvision/templates/WaferToWafer/view.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /tmp/app/developer/templates/WaferToWafer/view.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /tmp/ui/templates/WaferToWafer/view.html (Source does not exist) 
django.template.loaders.app_directories.Loader: /tmp/configuration/templates/WaferToWafer/view.html (Source does not exist) 

ШАБЛОНЫ из настроек:

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'motor/ui/templates')], 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
       'context_processors.config', 
       'ui.context_processors.navigation', 
       'core.appmngr.context_processor', 
      ], 
     }, 
    }, 
] 

Шаблон он ищет делает Exis t при /usr/local/motor/motor/app/cdsem/templates/WaferToWafer/view.html

Когда я получу ошибку, если обновить страницу, она работает.

+0

Не могли бы вы отобразить полный список каталогов, которые искали при ошибке? Также заданы настройки 'TEMPLATES' (или эквивалентные настройки шаблонов старого стиля)? –

+1

Много изменилось между 1.5 и 1.9, поэтому было бы трудно ожидать, что он просто работает. В любом случае, попробуйте создать [mcve]. – Sayse

+0

У меня нет удаленного доступа к этому сайту, поэтому мне придется идти на сайт и попытаться воссоздать ошибку. Это будет не до следующей недели. Я знаю, что многое изменилось с 1,5 до 1,9, поскольку мне пришлось внести много изменений в код для обновления версии. Это не «просто работало» - много времени, когда в него. И было проведено много испытаний, а также запущен набор тестов регрессии. Создание минимального примера будет очень сложным, так как это очень большое приложение, и эта ошибка очень прерывистая. –

ответ

0

Я «исправил» это, явно указав шаблон dirs в TEMPLATES dict. Все еще не знаю, почему я должен был сделать это только на одном сайте.