[zeromq-dev] problem with sending and recieving in a simple PAIR setup

Michael Hansen michaelsvenna at gmail.com
Sun Aug 19 07:54:34 CEST 2018


Ahh ok of course.
This works much better.
What if I have a setup where I in client A in reality have a lot of threads
where each thread needs a type of stream of data and in B i have connected
some sensors.
These sensors needs to be streamed from B to A such that a group of threads
needs sensor X another group of threads in A needs output of sensor Y etc.
What would be the best type of architecture for this type of setup?


On Sat, Aug 18, 2018, 10:03 Mykola Ostrovskyy via zeromq-dev <
zeromq-dev at lists.zeromq.org> wrote:

> Michael,
>
> ZMQ sockets are not thread safe. Each thread should use a separate socket,
> so you need a pair of sockets in each test script.
>
> Also PAIR is a rather special-purpose type of socket mostly used in scope
> of one process.
>
> I would recommend to use two PUSH-PULL channels for asynchronous
> communication between peers. Something like:
>
> ClientA
>   RecvThread
>     recvsocket.bind(PULL, 9998)
>   SendThread
>     sendsocket.connect(PUSH, 9999)
>
> ClientB
>   RecvThread
>     recvsocket.bind(PULL, 9999)
>   SendThread
>     sendsocket.connect(PUSH, 9998)
>
>
> Regards,
> Mykola
>
>
> сб, 18 авг. 2018 г. в 7:18, Michael Hansen <michaelsvenna at gmail.com>:
>
>> Hi,
>> I am not sure I see where there is missing some indentation.
>> To me it looks okay regarding indentation.
>> rtx is just a def with a while loop where recv is called and printed in
>> every iteration.
>>
>> On Sat, Aug 18, 2018 at 12:44 AM, Tomer Eliyahu <tomereliyahu1 at gmail.com>
>> wrote:
>>
>>> Aren't you missing indentation in rtx functions?
>>>
>>> On Sat, Aug 18, 2018, 01:20 Michael Hansen <michaelsvenna at gmail.com>
>>> wrote:
>>>
>>>> Hello, I am quite new to ZMQ which seems like a really nice library.
>>>> However i seem to be running into some issues already.
>>>> I have to make a setup with just 2 peers who can send to each other.
>>>> There is no order in how the clients communicate - however in generel
>>>> data flows
>>>> from one to the other and commands from the other to the first.
>>>>
>>>> I made a small test as below but communication seem to hang up and only
>>>> one part is sending.
>>>> Also - sometimes when i try to run this, i get the following error:
>>>>
>>>> 'Resource temporarily unavailable (bundled/zeromq/src/signaler.cpp:301)
>>>>
>>>> Abort trap: 6'
>>>>
>>>>
>>>> Here are the 2 components, what am I doing wrong?
>>>>
>>>>
>>>>
>>>>
>>>> # ==============
>>>> # = SERVER A
>>>> # ==============
>>>>
>>>>
>>>> import threading
>>>> import time
>>>> import zmq
>>>>
>>>>
>>>> port = 9999
>>>> context = zmq.Context()
>>>> socket = context.socket(zmq.PAIR)
>>>> socket.connect("tcp://127.0.0.1:%s" % port)
>>>>
>>>>
>>>> def rtx(socket):
>>>> print('A started receiving...')
>>>> while 1:
>>>> print(b'A RECEIVED : %s' % socket.recv())
>>>>
>>>>
>>>> def ttx(socket):
>>>> print('A started transmitting...')
>>>> while 1:
>>>> socket.send(b'Message from A')
>>>> time.sleep(1)
>>>>
>>>>
>>>> threading.Thread(target=rtx, args=(socket,)).start()
>>>> threading.Thread(target=ttx, args=(socket,)).start()
>>>>
>>>>
>>>>
>>>>
>>>> # ==============
>>>> # = SERVER B
>>>> # ==============
>>>>
>>>>
>>>> import threading
>>>> import time
>>>> import zmq
>>>>
>>>>
>>>> port = 9999
>>>> context = zmq.Context()
>>>> socket = context.socket(zmq.PAIR)
>>>> socket.bind("tcp://127.0.0.1:%s" % port)
>>>>
>>>>
>>>> def rtx(socket):
>>>> print('B started receiving...')
>>>> while 1:
>>>> print(b'B RECEIVED : %s' % socket.recv())
>>>>
>>>>
>>>> def ttx(socket):
>>>> print('B started transmitting...')
>>>> while 1:
>>>> socket.send(b'Message from B')
>>>> time.sleep(1)
>>>>
>>>>
>>>> threading.Thread(target=rtx, args=(socket,)).start()
>>>> threading.Thread(target=ttx, args=(socket,)).start()
>>>>
>>>> _______________________________________________
>>>> zeromq-dev mailing list
>>>> zeromq-dev at lists.zeromq.org
>>>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>>
>>>
>>> _______________________________________________
>>> zeromq-dev mailing list
>>> zeromq-dev at lists.zeromq.org
>>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>>
>>>
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org
>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20180819/9ce409e2/attachment.html>


More information about the zeromq-dev mailing list