Простая регистрация / отладка приложений с помощью nginx, uwsgi, flask?
я не хочу включатьопасная отладочная консоль, но мое приложение получает ошибку 500 и неКажется, я пишу какой-нибудь вывод для более глубокого изучения.
Я виделэтот обмен в списке рассылкичто привело меняна эту страницу об ошибках регистрации.
Тем не менее, я все еще нахожу это очень запутанным и у меня есть пара вопросов:
(1) В каком файле должен находиться материал ниже?
ADMINS = ['[email protected]']
if not app.debug:
import logging
from logging.handlers import SMTPHandler
mail_handler = SMTPHandler('127.0.0.1',
'[email protected]',
ADMINS, 'YourApplication Failed')
mail_handler.setLevel(logging.ERROR)
app.logger.addHandler(mail_handler)
... при условии "становится больше" шаблон файла для больших приложений? ? ? ?__init__.py
config.py
run.py
(2) Меня там завалили варианты, и я могуСкажи, какой я должен использовать. Какие регистраторы мне следует включить, с какими настройками, чтобы реплицировать отладку локального сервера Python, которую я получаю на стандартный вывод при запуске run.py? Я считаю, что локальный выходной поток по умолчанию очень полезен, больше, чем интерактивный отладчик на странице. У кого-нибудь есть шаблон, которым он мог бы поделиться при настройке чего-либо, копирующего это с развертыванием nginx, с выводом в журнал?
(3) Есть ли что-то, что мне нужно изменить, не на уровне колбы, а в nginx, скажем, в моем/etc/nginx/sites-available/appname
файл, чтобы включить ведение журнала?
В частности, яя ищу информацию, которую получаю, когда python запускается локально, почему, скажем, пакет нене работает, или где может быть моя синтаксическая ошибка, или какая переменная не 'не существует:
$ python run.py
Traceback (most recent call last):
File "run.py", line 1, in
from myappname import app
File "/home/me/myappname/myappname/__init__.py", line 27, in
file_handler.setLevel(logging.debug)
File "/usr/lib/python2.7/logging/__init__.py", line 710, in setLevel
self.level = _checkLevel(level)
File "/usr/lib/python2.7/logging/__init__.py", line 190, in _checkLevel
raise TypeError("Level not an integer or a valid string: %r" % level)
Когда я запускаю колбу на сервере, я никогда не вижу этого. Я просто получаю ошибку uWSGI в браузере и не знаю, какой код был проблематичным. Я просто хотел бы, чтобы что-то подобное было записано в файл.
Я также заметил, что установка следующей регистрации нея действительно много пишу в файл, даже когда я поднимаю логи до уровня DEBUG:
from logging import FileHandler
file_handler = FileHandler('mylog.log')
file_handler.setLevel(logging.DEBUG)
app.logger.addHandler(file_handler)
mylog.log
пусто, даже если в моем приложении нет ошибок.
также добавлю, что ямы пытались установить debug = True следующими способами:__init__.py
app = Flask(__name__)
app.debug = True
app.config['DEBUG'] = True
from werkzeug.debug import DebuggedApplication
app.wsgi_app = DebuggedApplication(app.wsgi_app, True)
app.config.from_object('config')
app.config.update(DEBUG=True)
app.config['DEBUG'] = True
if __name__ == '__main__':
app.run(debug=True)
В то время как в моем файле config.py у меня есть ...
debug = True
Debug = True
DEBUG = True
Тем не менее, никакой отладки не происходит, и без регистрации или отладки это довольно сложно отследить. Ошибки просто завершают работу приложения с помощью ненужного сообщения браузера:
uWSGI Error
Python application not found