Waitress¶
Waitress 是一个纯 Python WSGI 服务器。
它易于配置。
它直接支持 Windows。
它易于安装,因为它不需要其他依赖项或编译。
它不支持流式请求,始终缓冲完整的请求数据。
它使用具有多个线程工作进程的单进程。
本页概述了运行 Waitress 的基础知识。务必阅读其文档和 waitress-serve --help
以了解有哪些可用功能。
安装¶
创建一个虚拟环境,安装您的应用程序,然后安装 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。
您可以通过不指定 --host
选项来绑定到非特权端口上的所有外部 IP。在使用反向代理设置时不要这样做,否则将有可能绕过代理。
0.0.0.0
不是一个有效的导航地址,您应该在浏览器中使用特定的 IP 地址。