我在远程Linux机器上运行CherryPy作为Web服务器。最终用户通过互联网访问CherryPy实例所服务的网站。到目前为止,非常好。
现在,我希望拥有该网站的开发版本,在同一台机器上运行,但在不同的端口上,这样我就可以开发和测试而不会打扰prod网站。我需要在同一台机器上进行开发,因为它包含大量数据,这些数据移动到不同的机器是不切实际的。
当然,dev实例的代码位于不同的目录中,因此当我编辑dev代码时,它不会触发prod实例的重新加载或以任何方式影响prod实例。
但是,如果我将我的dev实例配置为在与prod实例不同的端口上运行并尝试启动dev实例,我会得到:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/cherrypy/process/wspbus.py", line 197, in publish
output.append(listener(*args, **kwargs))
File "/usr/lib/python2.7/dist-packages/cherrypy/_cpserver.py", line 151, in start
ServerAdapter.start(self)
File "/usr/lib/python2.7/dist-packages/cherrypy/process/servers.py", line 167, in start
wait_for_free_port(*self.bind_addr)
File "/usr/lib/python2.7/dist-packages/cherrypy/process/servers.py", line 410, in wait_for_free_port
raise IOError("Port %r not free on %r" % (port, host))
IOError: Port 8080 not free on '127.0.0.1'
dev和prod实例都没有在端口8080上运行.prod实例在SSL(443)上,而dev实例我可以放在任意端口上(让我们假设它在98765上)。我没有在任何配置文件中的任何地方指定8080。所以我没想到会出现端口冲突,但是,对于一个实例来说,CherryPy会产生2个进程 - 我猜有某种父子关系 - 其中一个进程以某种方式监听{{ 1}}。因为在我尝试启动的两个实例中都会发生这种情况,所以第二个实例无法启动,因为最终会在8080上发生此冲突。
我已经尝试了几件事,比如关闭自动加载和超时监控,希望CherryPy不会启动与8080相关的进程,但到目前为止还没有运气。
提前感谢您的帮助!
答案 0 :(得分:0)
我有同样的问题,要修复将此添加到每个樱桃
categories