Spec-Zone.ru › Flask 2.3

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.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-адрес в своём браузере.

© 2007–2022 Pallets
Licensed under the BSD 3-clause License.
https://flask.palletsprojects.com/en/2.3.x/deploying/gevent/

Spec-Zone.ru

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