Как установить тайм-аут запроса с помощью Python Flask? Я пытаюсь сравнить Flask с некоторыми другими фреймворками и настроить таймауты как эквивалентные.
Благодарю!
Как установить тайм-аут запроса с помощью Python Flask? Я пытаюсь сравнить Flask с некоторыми другими фреймворками и настроить таймауты как эквивалентные.
Благодарю!
Блокировать серверы только для создания логики сервера. При запуске приложения Flask должно быть сервером WSGI. Наиболее распространенным является uWSGI (& nGinx как фасад между внешним миром и вашим сервером).
Но вы можете использовать любой сервер WSGI, который вам подходит (nichol.as/benchmark-of-python-web-servers).
Полезные советы:
Заметка:
Зачем использовать сервер WSGI?
Одна из главных причин: Flask сама не может одновременно обслуживать несколько запросов. С другой стороны, сервер WSGI (включая uWSGI) способен подключать приложение Flask к нескольким подпроцессам и распространять входящие запросы на них. И он заботится о других полезных вещах
Как сказал Martijn Pieters в своем комментарии к этому вопросу, это не то, что вы хотите сделать, потому что сервер разработки Flask не является хорошим выбором для работы. Было бы лучше запустить ваше приложение-колбу на сервере, таком как Gunicorn, и вместо этого установить время ожидания.
Но чтобы ответить на вопрос в любом случае, Flask.run имеет параметр options, позволяющий передавать параметры на базовый сервер Werkzeug:
run(host=None, port=None, debug=None, load_dotenv=True, **options)
соответствующий метод werkzeug, в свою очередь, имеет параметр request_handler, позволяющий указать, какой обработчик запроса следует использовать:
werkzeug.serving.run_simple(hostname, port, application, use_reloader=False, use_debugger=False, use_evalex=True, extra_files=None, reloader_interval=1, reloader_type='auto', threaded=False, processes=1, request_handler=None, static_files=None, passthrough_errors=False, ssl_context=None)
Это ваша ловушка для предоставления объекта-обработчика запроса, который реализует политику тайм-аута, которую вы хотите (тема, рассматриваемая в этом вопросе: Как реализовать Timeout в BaseHTTPServer.BaseHTTPRequestHandler Python).