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.
Создайте виртуальное окружение, установите своё приложение, а затем установите gevent.
$ cd hello-app $ python -m venv venv $ . venv/bin/activate $ pip install . # install your application $ pip install gevent
Запуск
Для использования gevent для обслуживания вашего приложения напишите скрипт, который импортирует его WSGIServer, а также ваше приложение или фабрику приложения.
wsgi.pyfrom 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-адрес в своём браузере.
© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.2.x/deploying/gevent/