首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pyzmq的异步ioloop

使用pyzmq的异步ioloop
EN

Stack Overflow用户
提问于 2017-12-24 04:35:13
回答 1查看 871关注 0票数 0

我想用zmq套接字创建一个tcp服务器。下面的代码使用python的异步ioloop使用zmq套接字创建tcp服务器。

在下面的代码中,我创建了zmq套接字来侦听传入的连接。coroutine recv_and_process创建一个套接字来侦听连接,并有一个while循环来响应传入的连接。

我的问题是如何消除while循环,而使用存在的asyncio event loop

代码语言:javascript
复制
import asyncio
import zmq
import zmq.asyncio

zmq.asyncio.install()
ctx = zmq.asyncio.Context()

@asyncio.coroutine
def recv_and_process():
    sock = ctx.socket(zmq.PULL)
    sock.bind('tcp://127.0.0.1:8888')
    while True:
        msg = yield from sock.recv_multipart() # waits for msg to be ready
        print(msg)

if __name__ == '__main__':

    loop = asyncio.get_event_loop()
    loop.run_until_complete(recv_and_process())
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-24 15:57:03

我不确定我是否理解您想要的内容,但是这里有一些想法:当我们说“异步事件循环”时,我们指的是在脚本中执行协同的全局对象。您已经通过运行事件循环来使用这个事件循环,直到coroutine recv_and_processloop.run_until_complete(recv_and_process())行完成为止。

运行异步事件循环来执行协同并不意味着您的程序不应该有普通的while循环语句。循环可以和以往一样用于相同的目的--例如,重复地做一些事情,包括等待某种协同作用,就像在您的情况下一样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47958095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档