为什么SO_REUSEADDR不适用于multiprocessing.Listener?

时间:2013-03-19 02:36:04

标签: python sockets python-2.7 multiprocessing

我正在构建一个使用Listener/Client包的multiprocessing类与另一个脚本进行通信的应用程序。

我可以成功创建监听器和客户端,并进行通信,但是我仍然会收到 TCP TIME-WAIT 的持久影响 - 在我重新运行脚本后,我在实例化时遇到异常听众:

  

[Errno 98]地址已在使用

我不知道为什么会发生这种情况,因为据我所知,默认情况下 SO_REUSEADDR 是在Listener的构造函数中设置的(请参阅Lib/multiprocessing/connection.py)。

我正在运行Ubuntu 12.10并使用Python 2.7。

1 个答案:

答案 0 :(得分:2)

当您没有干净地关闭插座时,通常会发生这种情况。您是否可以发布一些代码,表明您正在干净地关闭套接字,即使您强行关闭应用程序?