Skip to content

Instantly share code, notes, and snippets.

@lifthrasiir
Last active December 19, 2015 09:29
Show Gist options
  • Save lifthrasiir/5933501 to your computer and use it in GitHub Desktop.
Save lifthrasiir/5933501 to your computer and use it in GitHub Desktop.
majordomo protocol overview
>>> import zmq
>>> c=zmq.Context()
>>> s1=c.socket(zmq.REQ)
>>> s2=c.socket(zmq.ROUTER)
>>> s3=c.socket(zmq.DEALER)
>>> s2.bind('inproc://a')
>>> s1.connect('inproc://a')
>>> s3.connect('inproc://a')
>>> s3.send_multipart(['', '<register>']) # <> <register>
>>> s2.recv_multipart() # <worker id> <> <register>
['\x00\x80\x00\x00*', '', '<register>']
>>> id=_[0]
>>> s1.send_multipart(['hello']) # <request data>
>>> s2.recv_multipart() # <client id> <> <request data>
['\x00\x80\x00\x00)', '', 'hello']
>>> s2.send_multipart([id, '', '<request>'] + _) # <worker id> <> <request> <client id> <> <request data>
>>> s3.recv_multipart() # <> <request> <client id> <> <request data>
['', '<request>', '\x00\x80\x00\x00)', '', 'hello']
>>> s3.send_multipart(['', '<reply>', _[2], '', 'world']) # <> <reply> <client id> <> <reply data>
>>> s2.recv_multipart() # <worker id> <> <reply> <client id> <> <reply data>
['\x00\x80\x00\x00*', '', '<reply>', '\x00\x80\x00\x00)', '', 'world']
>>> s2.send_multipart(_[3:]) # <client id> <> <reply data>
>>> s1.recv_multipart() # <reply data>
['world']
>>>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment