eventlet
Предпочтительно использовать Gunicorn с рабочими процессами eventlet, а не использовать eventlet напрямую. Gunicorn предоставляет гораздо более настраиваемый и проверенный в работе сервер.
eventlet позволяет писать асинхронный, основанный на сопрограммах код, который выглядит как стандартный синхронный Python. Он использует greenlet для включения переключения задач без написания async/await или использования asyncio.
gevent — это другая библиотека, которая делает то же самое. Определённые зависимости, которые у вас есть, или другие соображения могут повлиять на выбор той или иной библиотеки.
eventlet предоставляет WSGI-сервер, который может обрабатывать множество подключений одновременно вместо одного на процесс рабочего процесса. Вам нужно фактически использовать eventlet в вашем собственном коде, чтобы увидеть какую-либо выгоду от использования сервера.
Установка
При использовании eventlet требуется greenlet>=1.0, в противном случае локальные переменные контекста, такие как request, не будут работать должным образом. При использовании PyPy требуется PyPy>=7.3.7.
Создайте виртуальную среду, установите ваше приложение, затем установите eventlet.
$ cd hello-app $ python -m venv venv $ . venv/bin/activate $ pip install . # install your application $ pip install eventlet
Запуск
Чтобы использовать eventlet для обслуживания вашего приложения, напишите скрипт, который импортирует его wsgi.server, а также ваше приложение или фабрику приложения.
wsgi.pyimport eventlet
from eventlet import wsgi
from hello import create_app
app = create_app()
wsgi.server(eventlet.listen(("127.0.0.1", 8000), app)
$ python wsgi.py (x) wsgi starting up on http://127.0.0.1:8000
Внешнее связывание
eventlet не следует запускать от имени root, так как это заставит код вашего приложения работать от имени root, что небезопасно. Однако это означает, что привязка к порту 80 или 443 не будет возможна. Вместо этого следует использовать обратный прокси, такой как nginx или Apache httpd перед eventlet.
Вы можете привязаться ко всем внешним IP-адресам на непривилегированном порту, используя 0.0.0.0 в аргументах сервера, показанных в предыдущем разделе. Не делайте этого при использовании настройки обратного прокси, иначе будет возможен обход прокси.
0.0.0.0 — это не допустимый адрес для перехода, вы бы использовали конкретный IP-адрес в своём браузере.
© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.2.x/deploying/eventlet/