Waitress

Waitress 是一个纯 Python WSGI 服务器。

  • 它易于配置。

  • 它直接支持 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 前面使用反向代理,例如 nginxApache httpd

你可以通过不指定 --host 选项来绑定到非特权端口上的所有外部 IP。当使用反向代理设置时不要这样做,否则可能会绕过代理。

0.0.0.0 不是一个有效的导航地址,你应该在浏览器中使用特定的 IP 地址。