Написать асинхронную обработку сообщений на python3.6

Василий7 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
29.08.2018

Внимание, если нет опыта с 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

В итоге должны независимо друг от друга непрерывно литься данные в две функции, а третья их параллельно обрабатывать