2014-10-29 1 views
4

В настоящее время я работаю над простым webapp в Python, используя bottle framework. Вот мое приложение структура:Ошибка Python Bottle framework 500: не удается найти шаблон в режиме Daemon

Структура

lib 
    - bottle.py 
    - bottledaemon.py 
    - lockfile.py 
    - __init__.py 
view 
    - dashboard.tpl 
run.py 

А вот мой run.py код:

#!/usr/bin/env python 
from lib.bottle import route, template, run, debug, request, static_file 
from lib.bottledaemon import daemon_run 

debug(mode=True) 

@route('/') 
def show_index(): 

    return template('dashboard') 

# If the following line is enabled, the server will start in non-Daemon mode. 
#run(host='0.0.0.0', port=80, debug=True) 

# If the following lines are enabled, the server will start in Daemon mode. 
if __name__ == "__main__": 
    daemon_run() 

Так что я хочу сервер WSGI для запуска в демона с помощью передавая его на bottle daemon script.

Проблема

При запуске кода не-daemonized он работает. Он показывает мне правильный шаблон, и в CLI я вижу HTTP-запросы.

Однако, когда я запускаю тот же код в демонаризованном режиме, он запускается как демон, поэтому он работает нормально, но он больше не может найти шаблон. Он показывает мне это сообщ об ошибке:

Error: 500 Internal Server Error

Sorry, the requested URL 'HERE IS MY WEBSITE URL' caused an error:

Template 'template' not found.

Так выглядит файл путь к файлу .tpl нельзя найти больше, когда я начинаю веб-сервер в daemonized режиме. Я уже много пробовал, но я не могу понять, и я хотел бы сохранить динамический путь. Любые предложения ребята?

Спасибо!

ответ

6

Это, вероятно, проблема с дорогой, я смог ее воссоздать и исправить, вручную добавив путь к папке вида в список TEMPLATE_PATH для бутылок.

from bottle import route, template, run, debug, request, static_file, TEMPLATE_PATH 
from bottledaemon import daemon_run 

import os 

TEMPLATE_PATH.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "view"))) 

# rest of script 

Edit:

Проследить его в корень проблемы, это вопрос путь наверняка. bottledaemon импортирует daemon и запускает DaemonContext, который по умолчанию изменяет рабочий каталог на '/' и bottledaemon не переопределяет его, как он должен. Поэтому, когда бутылка ищет обратный путь в папке view, она фактически ищет «/ view» в корне системы.

+0

Traceback (самый последний вызов последнего): Файл "run.py", строка 6, в TEMPLATE_PATH.insert (0, os.path.abspath (os.path.join (os.path.dirname (__ file_ _), "view"))) NameError: имя 'TEMPLATE_PATH' не определено –

+0

Посмотрите на верхнюю строчку, вам необходимо добавить ее в список импорта. – CasualDemon

+0

Thanks mate! Теперь демон снова начинается. Тем не менее то же 500 ошибок tho. Есть ли статический путь где-то, что я должен вставить в код, который вы предоставили? –

 Смежные вопросы

  • Нет связанных вопросов^_^