【问题标题】:Running 2 CherryPy instances on the same machine在同一台机器上运行 2 个 CherryPy 实例
【发布时间】:2012-09-02 22:02:29
【问题描述】:

我在远程 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 个进程——我猜有某种父子关系——其中一个进程以某种方式监听 @987654322 @。因为我尝试启动的两个实例都会发生这种情况,所以第二个实例无法启动,因为最终会在 8080 上发生这种冲突。

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

提前感谢您的帮助!

【问题讨论】:

  • 8080端口上是否有另一个进程在运行?
  • @sarah:感谢您的帮助。根据netstat,机器上8080上没有运行任何东西。
  • 实际上,如果我运行nmap,它确实说8080上运行了一些东西:8080/tcp open http-proxy
  • 8080 上的进程(如预期的那样)是第一个 prod cherrypy 实例(即使它正在侦听 ssl (443) )。如果我首先杀死 python 进程,则 nmap 不再显示在 8080 上侦听的 http-proxy。
  • 好的,我找到了解决方法。这是一个完全的hack,但我会提到它以防万一它对像我一样绝望的其他人有用。我再次下载了 CherryPy-3.2.2,将代码放在与原始 CherryPy 安装不同的目录中,在运行我的开发代码时设置我的 PYTHONPATH 以便它命中这个新的 CherryPy-3.2.2 安装,并更改了 _cpserver 的第 25 行。 py 为 'socket_port=8081' 而不是 'socket_port=8080'。就像我说的,完全是 hack,但至少我现在可以在开发网站上工作了!

标签: cherrypy


【解决方案1】:

我遇到了同样的问题,要解决这个问题,请将其添加到每个cherrypy

cherrypy.config.update({'server.socket_host': '127.0.0.1',
                        'server.socket_port': 9023
                        })

【讨论】:

    猜你喜欢
    • 2019-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多