Подтвердить что ты не робот

как установить тайм-аут HTTP-запроса в колбе питона

Как установить тайм-аут запроса с помощью Python Flask? Я пытаюсь сравнить Flask с некоторыми другими фреймворками и настроить таймауты как эквивалентные.

Благодарю!

4b9b3361

Ответ 1

WSGI-сервер

Блокировать серверы только для создания логики сервера. При запуске приложения Flask должно быть сервером WSGI. Наиболее распространенным является uWSGI (& nGinx как фасад между внешним миром и вашим сервером).
Но вы можете использовать любой сервер WSGI, который вам подходит (nichol.as/benchmark-of-python-web-servers).

Полезные советы:

Заметка:

Зачем использовать сервер WSGI?

Одна из главных причин: Flask сама не может одновременно обслуживать несколько запросов. С другой стороны, сервер WSGI (включая uWSGI) способен подключать приложение Flask к нескольким подпроцессам и распространять входящие запросы на них. И он заботится о других полезных вещах

Ответ 2

Как сказал 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).