Могу ли я обслуживать несколько клиентов, используя только приложение Flask.запустить() как автономный?
Я знаю, что могу связать Flask с Apache или другими веб-серверами. Но, я думал о запуске Flask в качестве автономного сервера, обслуживающего несколько клиентов одновременно.
это возможно? Должен ли я обрабатывать порождение нескольких потоков и управлять ими?
2 ответов:
flask.Flask.runпринимает дополнительные аргументы ключевого слова (**options), которые он направляет наwerkzeug.serving.run_simple- два из этих аргументовthreaded(который вы можете установить кTrueдля включения резьбы) иprocesses(который вы можете установить на число больше одного, чтобы Werkzeug породил более одного процесса для обработки запросов). Так что если вы:if __name__ == '__main__': app.run(threaded=True) # Alternately # app.run(processes=3)колба скажет Werkzeug использовать резьбу и порождать три процесса для обработки входящих запросы.
это, как говорится, сверла по
serving.run_simpleобертывает стандартную библиотекуwsgirefпакет-и этот пакет содержит эталонную реализацию WSGI, а не готовый к работе веб-сервер. Если вы собираетесь использовать Flask в производстве (предполагая, что" производство " не является внутренним приложением с низким трафиком с не более чем 10 одновременными пользователями), убедитесь, что он стоит за реальным веб-сервером (см. раздел документов Flask под названием развертывание Варианты для некоторых предложенных методов).
использовать простой
app.run()изнутри Flask создает один синхронный сервер на одном потоке, способном обслуживать только одного клиента одновременно. Именно по этой причине он предназначен для использования в контролируемых средах с низким спросом (т. е. разработка, отладка).нерест потоков и управление ими самостоятельно, вероятно, не приведет вас очень далеко, потому что питон Гил.
тем не менее, у вас все еще есть несколько хороших вариантов. Gunicorn является твердым, простой в использовании сервер WSGI, который позволит вам породить несколько рабочих (отдельные процессы, так что не Гил беспокоит), и даже поставляется с асинхронный работников это ускорит ваше приложение (и сделает его более безопасным) с небольшим количеством работы с вашей стороны (особенно с колбой).
до сих пор, даже Gunicorn, вероятно, не следует напрямую публично разоблачен. В производстве он должен использоваться за более надежным HTTP-сервером; nginx как правило, сочетается с Gunicorn и флягу.
Comments