Spec-Zone.ru › Werkzeug

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 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/latest/deployment/gevent/

Spec-Zone.ru

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