Spec-Zone.ru › Flask 3.0

gevent

Предпочтительнее использовать Gunicorn или uWSGI с рабочими процессами gevent, а не использовать gevent напрямую. Gunicorn и uWSGI предоставляют гораздо более настраиваемые и проверенные в производстве серверы.

gevent позволяет писать асинхронный код на основе корутин, который выглядит как стандартный синхронный Python. Он использует greenlet для включения переключения задач без написания async/await или использования asyncio.

eventlet — это ещё одна библиотека, которая делает то же самое. Некоторые ваши зависимости или другие соображения могут повлиять на выбор того или иного варианта.

gevent предоставляет WSGI-сервер, который может обрабатывать множество подключений одновременно вместо одного на процесс-рабочий процесс. Вы должны фактически использовать gevent в собственном коде, чтобы увидеть преимущества использования сервера.

Установка

При использовании gevent требуется greenlet>=1.0, в противном случае локальные переменные контекста, такие как request, не будут работать должным образом. При использовании PyPy требуется PyPy>=7.3.7.

Создайте virtualenv, установите своё приложение, а затем установите gevent.

$ cd hello-app
$ python -m venv .venv
$ . .venv/bin/activate
$ pip install .  # install your application
$ pip install gevent

Запуск

Чтобы использовать gevent для обслуживания вашего приложения, напишите скрипт, который импортирует его WSGIServer, а также ваше приложение или фабрику приложений.

wsgi.py
from gevent.pywsgi import WSGIServer
from hello import create_app

app = create_app()
http_server = WSGIServer(("127.0.0.1", 8000), app)
http_server.serve_forever()
$ python wsgi.py

При запуске сервера не отображается выходной результат.

Внешнее связывание

gevent не следует запускать от имени root, поскольку это заставит код вашего приложения работать от имени root, что небезопасно. Однако это означает, что привязка к порту 80 или 443 будет невозможна. Вместо этого следует использовать обратный прокси, такой как nginx или Apache httpd, перед gevent.

Вы можете привязаться ко всем внешним 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/gevent/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API