0

リモートの Linux マシンで、CherryPy を Web サーバーとして実行しています。エンドユーザーは、CherryPy インスタンスが提供するインターネット経由で Web サイトにアクセスします。ここまでは順調ですね。

今、同じマシン上で別のポートで実行されているサイトの開発バージョンを使用して、製品 Web サイトを妨害することなく開発およびテストできるようにしたいと考えています。別のマシンに移動するのは現実的ではない多くのデータが含まれているため、同じマシンで開発を行う必要があります。

もちろん、開発インスタンスのコードは別のディレクトリにあるため、開発コードを編集しても、製品インスタンスのリロードがトリガーされたり、製品インスタンスに影響を与えたりすることはありません。

ただし、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 つが何らかの形で をリッスンしていlocalhost:8080ます。これは起動しようとしている両方のインスタンスで発生するため、8080 でこの競合が発生するため、2 番目のインスタンスは起動できません。

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 に答える