diff --git a/eventlet/green/zmq.py b/eventlet/green/zmq.py index 05ad376..09caf28 100644 --- a/eventlet/green/zmq.py +++ b/eventlet/green/zmq.py @@ -13,6 +13,15 @@ slurp_properties(__zmq__, globals(), ignore=__patched__) from collections import deque +try: + # alias XREQ/XREP to DEALER/ROUTER if available + if not hasattr(__zmq__, 'XREQ'): + XREQ = DEALER + if not hasattr(__zmq__, 'XREP'): + XREP = ROUTER +except NameError: + pass + class LockReleaseError(Exception): pass @@ -196,10 +205,10 @@ class Socket(_Socket): def __init__(self, context, socket_type): super(Socket, self).__init__(context, socket_type) - self._eventlet_send_event = _BlockedThread() - self._eventlet_recv_event = _BlockedThread() - self._eventlet_send_lock = _QueueLock() - self._eventlet_recv_lock = _QueueLock() + self.__dict__['_eventlet_send_event'] = _BlockedThread() + self.__dict__['_eventlet_recv_event'] = _BlockedThread() + self.__dict__['_eventlet_send_lock'] = _QueueLock() + self.__dict__['_eventlet_recv_lock'] = _QueueLock() def event(fd): # Some events arrived at the zmq socket. This may mean @@ -214,14 +223,14 @@ class Socket(_Socket): _Socket_getsockopt(self, EVENTS) hub = hubs.get_hub() - self._eventlet_listener = hub.add(hub.READ, self.getsockopt(FD), event) + self.__dict__['_eventlet_listener'] = hub.add(hub.READ, self.getsockopt(FD), event) @_wraps(_Socket.close) def close(self, linger=None): super(Socket, self).close(linger) if self._eventlet_listener is not None: hubs.get_hub().remove(self._eventlet_listener) - self._eventlet_listener = None + self.__dict__['_eventlet_listener'] = None # wake any blocked threads self._eventlet_send_event.wake() self._eventlet_recv_event.wake()