Как правильно ожидать ответа zmq из асинхронного маршрута - PullRequest
2 голосов
/ 25 марта 2019

Я пытаюсь дождаться ответа на сообщение ZMQ из маршрута, но получаю следующую ошибку.

RuntimeError: Task got bad yield: <zmq.eventloop.future._TornadoFuture object at 0x7f74f4143c88>

Следующий код работал с ApiStar над более ранней версией нашего API, закодированной с этой структурой, но мы приняли решение перейти на Starlette сейчас. Код ниже включен в функцию async def.

import zmq
from zmq.eventloop.future import Context
import threading
zmq_context = zmq.eventloop.future.Context()
mysocket = zmq_context.socket(zmq.SUB)

mysocket.connect(f"tcp://{DB_HOST}:{DEFAULT_ZMQ_PORT}")

topicstring = 'niOSGOV6eAyUKOOVdXm0CA=='
topicfilter=bytes(topicstring, 'utf-8').decode()
mysocket.setsockopt_string(zmq.SUBSCRIBE, topicfilter)

all_responses = await mysocket.recv_multipart(flags=0, copy=True, track=False)

Спасибо за любую помощь!

...