在同一台机器上运行2个CherryPy实例

时间:2012-09-02 22:02:30

标签: cherrypy

我在远程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相关的进程,但到目前为止还没有运气。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我有同样的问题,要修复将此添加到每个樱桃

categories