使用`waitress`在多个端口提供Django应用

5 投票
2 回答
1985 浏览
提问于 2025-04-18 16:22

我正在使用 waitress 来运行我的 Django 应用。现在我需要它能同时在两个端口上提供服务,而且要在同一个线程里运行。(不能在不同的进程中,因为我需要在开发时能够在调试器中运行它。)

我该怎么做呢?

2 个回答

0

我之前没用过 waitress,不过从最新的文档来看,似乎没有提到可以使用多个端口。我快速查看了一下代码,找到了 runner.py,里面有一些命令行选项的说明,而 --port=PORT 这个选项似乎不支持多个端口。虽然这不能算是确凿的证据,但也算是个不错的线索,没必要深入挖掘。

如果我想尝试给 waitress 添加这个功能,看起来需要用到 select

这里有一个StackOverflow上的例子,展示了如何用 select 将一个基本的 server 绑定到多个端口

2

最新版本的waitress现在可以同时监听多个连接口,包括IPv4和IPv6。

以前你需要提供一个主机和端口的组合,现在你只需要给waitress提供一个用空格分开的列表,它会根据需要创建多个连接口。

from waitress import serve
serve(wsgiapp, listen='0.0.0.0:8080 [::]:9090 *:6543')

撰写回答