Принятие решения не работает для меня.
Gunicorn - это среда предварительного разветвления, и, очевидно, отладчик Flask не работает в среде разветвления .
Внимание
Даже если интерактивный отладчик не работает в
разветвление среды (что делает практически невозможным использование на
производственные серверы) [...]
Даже если вы установите app.debug = True
, вы все равно получите пустую страницу с сообщением Внутренняя ошибка сервера , если вы запустите с gunicorn testserver:app
. Лучшее, что вы можете сделать с gunicorn, это запустить его с gunicorn --debug testserver:app
. Это дает вам трассировку в дополнение к сообщению Внутренняя ошибка сервера . Однако это та же самая текстовая трассировка, которую вы видите в терминале, а не в отладчике Flask.
При добавлении раздела if __name__ ...
в testserver.py и запуске python testserver.py
для запуска сервера в разработке вы получаете отладчик Flask. Другими словами, не используйте gunicorn в разработке, если вам нужен отладчик Flask.
app = Flask(__name__)
app.config['DEBUG'] = True
if __name__ == '__main__':
app.run()
Совет для пользователей Heroku:
Лично мне все еще нравится использовать foreman start
вместо python testserver.py
, поскольку устанавливает для меня все переменные env . Чтобы заставить это работать:
Содержание Procfile
web: bin/web
Содержимое bin/web
, файл относительно корня проекта
#!/bin/sh
if [ "$FLASK_ENV" == "development" ]; then
python app.py
else
gunicorn app:app -w 3
fi
В процессе разработки создайте файл .env
относительно корня проекта со следующим содержимым (документы здесь )
FLASK_ENV=development
DEBUG=True
Кроме того, не забудьте изменить строку app.config['DEBUG']...
в testserver.py
на что-то, что не будет запускать Flask в режиме отладки в рабочем режиме.
app.config['DEBUG'] = os.environ.get('DEBUG', False)