Официантка¶
Waitress - это чистый WSGI-сервер на языке Python.
Его легко настроить.
Он поддерживает Windows напрямую.
Его легко установить, так как он не требует дополнительных зависимостей или компиляции.
Он не поддерживает потоковые запросы, все данные запроса всегда буферизируются.
Он использует один процесс с несколькими рабочими потоками.
На этой странице описаны основы работы Waitress. Обязательно прочитайте документацию и waitress-serve --help
, чтобы понять, какие возможности доступны.
Установка¶
Создайте virtualenv, установите ваше приложение, затем установите waitress
.
$ cd hello-app
$ python -m venv venv
$ . venv/bin/activate
$ pip install . # install your application
$ pip install waitress
Бег¶
Единственный обязательный аргумент waitress-serve
указывает ему, как загрузить ваше приложение Flask. Синтаксис таков: {module}:{app}
. module
- это точечное имя импорта модуля с вашим приложением. app
- это переменная с приложением. Если вы используете шаблон фабрики приложений, используйте --call {module}:{factory}
вместо этого.
# equivalent to 'from hello import app'
$ waitress-serve --host 127.0.0.1 hello:app
# equivalent to 'from hello import create_app; create_app()'
$ waitress-serve --host 127.0.0.1 --call hello:create_app
Serving on http://127.0.0.1:8080
Опция --host
привязывает сервер только к локальному 127.0.0.1
.
Журналы для каждого запроса не отображаются, показываются только ошибки. Ведение журнала можно настроить через интерфейс Python вместо командной строки.
Внешнее связывание¶
Waitress не следует запускать от имени root, поскольку это приведет к тому, что код вашего приложения будет выполняться от имени root, что небезопасно. Однако это означает, что привязка к порту 80 или 443 невозможна. Вместо этого перед Waitress следует использовать обратный прокси-сервер, например nginx или Apache httpd.
Вы можете привязаться ко всем внешним IP на непривилегированном порту, не указывая опцию --host
. Не делайте этого при использовании реверсивного прокси, иначе прокси можно будет обойти.
0.0.0.0
не является действительным адресом для перехода, вы должны использовать конкретный IP-адрес в браузере.