Ответ 1
flask.Flask.run
принимает дополнительные аргументы ключевого слова (**options
), которые он передает werkzeug.serving.run_simple
- два из этих аргументов - threaded
(логическое значение) и processes
(которые можно установить на число больше единицы, чтобы werkzeug порождал более одного процесса для обработки запросов).
threaded
по умолчанию равно True
начиная с Flask 1.0, поэтому для последних версий Flask сервер разработки по умолчанию сможет одновременно обслуживать несколько клиентов. Для более старых версий Flask вы можете явно передать threaded=True
, чтобы включить это поведение.
Например, вы можете сделать
if __name__ == '__main__':
app.run(threaded=True)
для обработки нескольких клиентов с использованием потоков способом, совместимым со старыми версиями Flask, или
if __name__ == '__main__':
app.run(threaded=False, processes=3)
чтобы сказать Werkzeug, чтобы он порождал три процесса для обработки входящих запросов, или просто
if __name__ == '__main__':
app.run()
для обработки нескольких клиентов с использованием потоков, если вы знаете, что будете использовать Flask 1.0 или более позднюю версию.
При этом Werkzeug serving.run_simple
упаковывает стандартный пакет wsgiref
- и этот пакет содержит эталонную реализацию WSGI, а не готовый к работе веб-сервер. Если вы собираетесь использовать Flask в работе (при условии, что "production" - это не внутреннее приложение с низким трафиком и не более чем 10 одновременно работающих пользователей), убедитесь, что оно установлено на реальном веб-сервере (см. раздел документации Flask, озаглавленный Параметры развертывания для некоторых предлагаемых методов).