如何从异步路由中正确等待zmq响应

时间:2019-03-24 21:21:05

标签: python-3.x async-await zeromq starlette

我正在尝试等待路由内的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)

谢谢您的帮助!

0 个答案:

没有答案