我正在努力使一个用于制作的火烧应用程序变硬。我遇到了名称服务器的以下问题。在
如果名称服务器关闭并快速重新打开,则可能有50%的几率引发以下错误:
socket.error: [Errno 98] Address already in use
这可以通过在窗口中运行名称服务器(pyro4-ns
),按CTRL+C,然后再次运行它来测试。有时我可以连续做10次而没有问题,但是接下来的10次将引发socket.error
。我发现当遇到此错误时,名称服务器释放套接字大约需要30秒。在
我正在使用supervisord
来控制Pyro。我发现下面的配置可以改善一些问题。值得注意的是,startretries=50
所花的时间总是比30秒长,因此名称服务器释放套接字所需的时间要长。这样,如果进程由于某种原因而终止,supervisord
可以启动它而不会失败。在
但是,如果在我的客户机执行过程中名称服务器死机,那么由于这个问题,重新连接到名称服务器需要30秒以上的时间。我在web服务器中使用Pyro客户机执行REST任务,因此这种延迟是不可接受的。在
感谢欧文的answer。在
如果PYRO_SOCK_重用环境设置为True,则不会发生此错误,因为它会在套接字上设置SO\u REUSEADDR。在
或者:
或在主管配置中:
^{pr2}$相关问题 更多 >
编程相关推荐