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-адрес.
© 2010 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/3.0.x/deploying/eventlet/