【发布时间】:2013-12-12 01:39:56
【问题描述】:
出于测试目的,我在同一台机器上运行了许多 Web 服务器。我不想处理服务器端口冲突,而是让服务器简单地向操作系统询问可用端口,然后告诉我他们得到了什么。
我可以通过登录到控制台或写入指定的临时文件(尚不确定)将端口传回给调用者,但知道端口号是棘手的部分。
目前,正在启动基于 WSGI 的服务器:
cherrypy.quickstart(dev_server, config=_GetConfig(options))
配置将包含以下内容:
{ 'global':
{ <snip>
'server.socket_host': '0.0.0.0',
'server.socket_port': int(options.port)
},
<snip>
}
有没有办法用 CherryPy 做到这一点?
我假设我可以将端口设置为“0”以使其自动选择,但这并没有给我提供报告的方法。
【问题讨论】:
-
您希望他们如何告诉您他们得到了什么?打印到控制台?登录到系统日志?将其写入运行文件?连接到某个主服务器并通过某个 API 发送它?
-
是否有那么多 Web 服务器在争夺一个端口?随机尝试端口的循环将在几轮后找到一个。但是,在您对@abarnert 评论做出答复之前,请不要考虑那个循环。
-
另外,请告诉我们您是如何启动服务器以及如何配置它们的,因为 CherryPy 具有很大的灵活性。
-
现在,每个测试实例都是它自己的 Python 进程,独立于其他实例启动。 CherryPy 实际上是通过以下方式启动的:cherrypy.quickstart(dev_server, config=_GetConfig(options))