ZeroMQ 在 [0.0.0.0:5555] 上的 Docker 上无法 .bind() - 地址已在使用中。为什么?
·
问题:ZeroMQ 在 [0.0.0.0:5555] 上的 Docker 上无法 .bind() - 地址已在使用中。为什么?
当尝试通过 Rancher Cattle 在 Docker 容器中运行它时,ZeroMQ 套接字在尝试在0.0.0.0:5555地址上执行 .bind() 时遇到了一点问题。
每次我尝试运行它时,我都会遇到同样的错误:
zmq.error.ZMQError:地址已在使用中。
试图在我的 Dockerfile 中做EXPOSE 5555和EXPOSE 5555/tcp,但它没有帮助我。
这是我的代码的一部分:
...
self.context = zmq.Context()
self.socket = self.context.socket(zmq.PUB)
self.socket.bind('tcp://%s:%d' % ('0.0.0.0', 5555))
...
也许有人有同样的问题。如何解决?
解答
经过两个小时的调试,我尝试制作 .bind_to_random_port() 并注意到,我在 Docker 中的应用程序是通过 4 个Gunicorn工作人员启动的。所以在第一个工人启动后,另外三个工人不能绑定到同一个端口。当您有多个线程或多个工作人员应用程序时,请注意仅绑定到一个端口。
更多推荐



所有评论(0)