0

我在远程 Linux 机器上运行 CherryPy 作为网络服务器。最终用户通过互联网访问 CherryPy 实例所服务的网站。到目前为止,一切都很好。

现在,我想要一个开发版本的网站,在同一台机器上运行,但在不同的端口上,这样我就可以开发和测试而不会干扰产品网站。我需要在同一台机器上进行开发,因为它包含大量数据,移动到不同的机器上是不切实际的。

当然,开发实例的代码位于不同的目录中,因此当我编辑开发代码时,它不会触发产品实例的重新加载或以任何方式影响产品实例。

但是,如果我将 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 个进程——我猜有某种父子关系——其中一个进程以某种方式正在侦听localhost:8080。因为我尝试启动的两个实例都会发生这种情况,所以第二个实例无法启动,因为最终在 8080 上出现了这种冲突。

我已经尝试了几件事,例如关闭自动重新加载和超时监控,希望 CherryPy 不会启动与 8080 相关的进程,但到目前为止还没有运气。

提前感谢您的帮助!

4

1 回答 1

0

我有同样的问题,修复这个添加到每个cherrypy

cherrypy.config.update({'server.socket_host': '127.0.0.1',
                        'server.socket_port': 9023
                        })
于 2016-07-19T15:05:55.207 回答