Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit dd30e2c

Browse files
committed
Retry on EINTR error
For whatever reason ZMQ now raises ZMQErrors with an errno.EINTR code. We simply retry when they occur. fixes 0rpc#62
1 parent c2f440b commit dd30e2c

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

zerorpc/gevent_zmq.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import gevent.event
3434
import gevent.core
3535
import sys
36+
import errno
3637

3738
class Context(_zmq.Context):
3839

@@ -104,7 +105,7 @@ def send(self, data, flags=0, copy=True, track=False):
104105
self._on_state_changed()
105106
return msg
106107
except _zmq.ZMQError, e:
107-
if e.errno != _zmq.EAGAIN:
108+
if e.errno not in (_zmq.EAGAIN, errno.EINTR):
108109
raise
109110
self._writable.clear()
110111
# The following sleep(0) force gevent to switch out to another
@@ -140,7 +141,7 @@ def recv(self, flags=0, copy=True, track=False):
140141
self._on_state_changed()
141142
return msg
142143
except _zmq.ZMQError, e:
143-
if e.errno != _zmq.EAGAIN:
144+
if e.errno not in (_zmq.EAGAIN, errno.EINTR):
144145
raise
145146
self._readable.clear()
146147
# The following sleep(0) force gevent to switch out to another

0 commit comments

Comments
 (0)