5
5
import eventlet .green .zmq as zmq
6
6
except ImportError :
7
7
zmq = None
8
+ import six
8
9
9
10
from .pubsub_manager import PubSubManager
10
11
11
12
12
13
class ZmqManager (PubSubManager ): # pragma: no cover
13
14
"""zmq based client manager.
14
15
16
+ NOTE: this zmq implementation should be considered experimental at this
17
+ time. At this time, eventlet is required to use zmq.
18
+
15
19
This class implements a zmq backend for event sharing across multiple
16
20
processes. To use a zmq backend, initialize the :class:`Server` instance as
17
21
follows::
@@ -27,25 +31,20 @@ class ZmqManager(PubSubManager): # pragma: no cover
27
31
default of ``False`` initializes the class for emitting
28
32
and receiving.
29
33
34
+ A zmq message broker must be running for the zmq_manager to work.
35
+ you can write your own or adapt one from the following simple broker
36
+ below::
30
37
31
- N.B.
32
- a zmq message broker must be running for the zmq_manager to work.
33
- you can write your own or adapt one from the following simple broker below.
34
- port numbers in the broker must match port numbers in connection string.
35
- ``
36
- import zmq
37
-
38
- receiver = zmq.Context().socket(zmq.PULL)
39
- receiver.bind("tcp://*:5555")
38
+ import zmq
40
39
41
- publisher = zmq.Context().socket(zmq.PUB )
42
- publisher .bind("tcp://*:5556 ")
40
+ receiver = zmq.Context().socket(zmq.PULL )
41
+ receiver .bind("tcp://*:5555 ")
43
42
43
+ publisher = zmq.Context().socket(zmq.PUB)
44
+ publisher.bind("tcp://*:5556")
44
45
45
- while True:
46
- publisher.send(receiver.recv())
47
- ``
48
-
46
+ while True:
47
+ publisher.send(receiver.recv())
49
48
"""
50
49
name = 'zmq'
51
50
@@ -97,7 +96,7 @@ def zmq_listen(self):
97
96
98
97
def _listen (self ):
99
98
for message in self .zmq_listen ():
100
- if isinstance (message , str ):
99
+ if isinstance (message , six . binary_type ):
101
100
try :
102
101
message = pickle .loads (message )
103
102
except Exception :
0 commit comments