Написать асинхронную обработку сообщений на python3.6
Внимание, если нет опыта с pyZMQ и AsyncIO лучше не терять время )
Есть код:
import zmq
import datetime
################################################## ################################################## ##
port_01 = "5559"
port_02 = "5579"
################################################## ################################################## ##
context_01 = zmq.Context()
context_02 = zmq.Context()
socket_01 = context_01.socket(zmq.PAIR)
socket_02 = context_02.socket(zmq.PAIR)
socket_01.bind("tcp://*:%s" % port_01)
socket_02.bind("tcp://*:%s" % port_02)
while True:
try:
start_time = datetime.datetime.now()
data_0 = json.loads(socket_01.recv())
data_2 = json.loads(socket_02.recv())
print(data_0)
print(data_2)
Проблема в том что вызов socket_02.recv() блокирующий, соответственно пока не придут данные data_0 не принимаются данные data_2
Скорость отправки сообщений разная, поэтому программа работает некорректно
Нужно написать три функции: два не блокирующих получения данных, и третья, которая эти данные обрабатывает.
Вот тема с похожим обсуждением – https://stackoverflow.com/questions/27183148/why-asyncio-queue-could-not-work-as-expected
https://pyzmq.readthedocs.io/en/latest/api/zmq.asyncio.html
В итоге должны независимо друг от друга непрерывно литься данные в две функции, а третья их параллельно обрабатывать