фляга: остановка сервера после исключения - PullRequest
0 голосов
/ 15 ноября 2018

Я хотел бы остановить свой колб-сервер, как только возникнет необработанное исключение.Вот пример:

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    1/0 # argh, exception
    return 'Hello World!'


if __name__ == '__main__':
    app.run(port=12345)

Если вы запустите это и перейдете на localhost: 12345, ваш браузер сообщит вам «внутренняя ошибка сервера» и консоль python регистрирует исключение DivisionByZero.

Но серверное приложение не падает.Flask упаковывает ваши маршруты в свою собственную обработку ошибок и выводит только исключение.

Я хотел бы остановить сервер, как только маршрут выдаст исключение.Но я не нашел такого поведения в API .Вы можете указать обработчик ошибок , но только для того, чтобы предоставлять клиенту пользовательские сообщения об ошибках после сбоя маршрута.

1 Ответ

0 голосов
/ 16 ноября 2018

Остановка колбы требует проникновения во внутренние органы Werkzeug. Смотри http://flask.pocoo.org/snippets/67/

Извлечено из однопользовательского приложения:

from flask import request

@app.route('/quit')
def shutdown():
    ...
    shutdown_hook = request.environ.get('werkzeug.server.shutdown')
    if shutdown_hook is not None:
        shutdown_hook()
    return Response("Bye", mimetype='text/plain')

Бит shutdown_hook - это то, что вам нужно в обработчике исключений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...