Docker “ZMQ崩溃”;随机地;在aiohttpweb服务中

Docker “ZMQ崩溃”;随机地;在aiohttpweb服务中,docker,kubernetes,zeromq,pyzmq,aiohttp,Docker,Kubernetes,Zeromq,Pyzmq,Aiohttp,我们有一个基于aiohttp的web服务,它使用ZMQ将作业发送给工人并等待结果。当然,我们正在使用zmqeventloop,所以我们可以等待zmqsockets。“有时”进程崩溃,我们得到以下堆栈跟踪: ... await socket.send(z, flags=flags) File "/usr/local/lib/python3.5/dist-packages/zmq/eventloop/future.py", line 165, in send kwargs=dict(flags=fl

我们有一个基于
aiohttp
的web服务,它使用
ZMQ
将作业发送给工人并等待结果。当然,我们正在使用zmqeventloop,所以我们可以等待zmqsockets。“有时”进程崩溃,我们得到以下堆栈跟踪:

...
await socket.send(z, flags=flags)
File "/usr/local/lib/python3.5/dist-packages/zmq/eventloop/future.py", line 165, in send
kwargs=dict(flags=flags, copy=copy, track=track),
File "/usr/local/lib/python3.5/dist-packages/zmq/eventloop/future.py", line 276, in _add_send_event
timeout_ms = self._shadow_sock.sndtimeo
File "/usr/local/lib/python3.5/dist-packages/zmq/sugar/attrsettr.py", line 45, in _getattr_
return self._get_attr_opt(upper_key, opt)
File "/usr/local/lib/python3.5/dist-packages/zmq/sugar/attrsettr.py", line 49, in _get_attr_opt
return self.get(opt)
File "zmq/backend/cython/socket.pyx", line 449, in zmq.backend.cython.socket.Socket.get (zmq/backend/cython/socket.c:4920)
File "zmq/backend/cython/socket.pyx", line 221, in zmq.backend.cython.socket._getsockopt (zmq/backend/cython/socket.c:2860)

“有时”的意思是,如果我只是在我的测试机器上运行代码,那么代码工作正常。在使用docker容器时,我们遇到了一些罕见的问题,但始终无法以可靠的方式重现。因为我们将容器移动到Kubernetes集群中,所以这种情况发生得更频繁。有人知道,上面的堆栈跟踪的来源是什么吗

aiohttp不用于香草pyzmq。 改用无环流

另见和