Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中订阅NATS主题并不断接收消息?_Python_Python Asyncio_Nats.io - Fatal编程技术网

如何在Python中订阅NATS主题并不断接收消息?

如何在Python中订阅NATS主题并不断接收消息?,python,python-asyncio,nats.io,Python,Python Asyncio,Nats.io,我从第页尝试了以下示例: nc=NATS 等待nc连接服务器=[nats://demo.nats.io:4222] future=asyncio.future 异步def cbmsg: 非本地未来 future.set_resultmsg 等待nc.subscribebupdates,cb=cb 等待nc.publishupdates,一切正常 等待nc刷新 等待消息传入 msg=wait asyncio.wait\u forfuture,1 但这似乎只对接收一条消息有用。我如何订阅并继续接收消

我从第页尝试了以下示例:

nc=NATS 等待nc连接服务器=[nats://demo.nats.io:4222] future=asyncio.future 异步def cbmsg: 非本地未来 future.set_resultmsg 等待nc.subscribebupdates,cb=cb 等待nc.publishupdates,一切正常 等待nc刷新 等待消息传入 msg=wait asyncio.wait\u forfuture,1 但这似乎只对接收一条消息有用。我如何订阅并继续接收消息


我也看到了,但它似乎只是在对话的双方都玩,然后退出。

对python了解不多,但看起来您只是在等待一条消息,程序就结束了。您应该看看订户示例。如您所见,有一个循环需要永远等待或等待SIGTERM信号。

对python了解不多,但看起来您只是在等待一条消息,程序结束。您应该看看订户示例。如您所见,有一个循环需要永远等待或等待SIGTERM信号。

您也可以找到一个长期运行的服务示例:

导入异步 从nats.aio.client将客户端导入为NAT 异步def运行循环: nc=NATS 异步def断开连接\u cb: 我的电话断开了。。。 异步def已重新连接\u cb: 打印机已重新连接。。。 等待nc.连接127.0.0.1, 重新连接的断路器=重新连接的断路器, 断开连接的断路器=断开连接的断路器, 最大重新连接尝试次数=-1, 循环=循环 异步定义帮助\u请求消息: subject=msg.subject reply=msg.reply 数据=msg.data.decode printReceived收到一条关于“{subject}{reply}”的消息:{data}.format 主题=主题,回复=回复,数据=数据 等待nc.PublishResponse,b‘我能帮忙’ 使用名为“workers”的队列分发请求 在订户中。 等待nc的帮助、工人、帮助请求 打印侦听有关“帮助”主题的请求。。。 对于范围为1000000的i: 等待asyncio.sleep1 尝试: response=wait nc.requesthelp,b'hi' 打印响应 例外情况除外,如e: 打印错误:,e 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': loop=asyncio.get\u事件\u循环 loop.run_直到_completerunloop loop.run_永远 loop.close
您还可以找到一个长期运行的服务示例:

导入异步 从nats.aio.client将客户端导入为NAT 异步def运行循环: nc=NATS 异步def断开连接\u cb: 我的电话断开了。。。 异步def已重新连接\u cb: 打印机已重新连接。。。 等待nc.连接127.0.0.1, 重新连接的断路器=重新连接的断路器, 断开连接的断路器=断开连接的断路器, 最大重新连接尝试次数=-1, 循环=循环 异步定义帮助\u请求消息: subject=msg.subject reply=msg.reply 数据=msg.data.decode printReceived收到一条关于“{subject}{reply}”的消息:{data}.format 主题=主题,回复=回复,数据=数据 等待nc.PublishResponse,b‘我能帮忙’ 使用名为“workers”的队列分发请求 在订户中。 等待nc的帮助、工人、帮助请求 打印侦听有关“帮助”主题的请求。。。 对于范围为1000000的i: 等待asyncio.sleep1 尝试: response=wait nc.requesthelp,b'hi' 打印响应 例外情况除外,如e: 打印错误:,e 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': loop=asyncio.get\u事件\u循环 loop.run_直到_completerunloop loop.run_永远 loop.close
谢谢和往常一样,既然你已经指出了我首先应该找到的例子,我觉得自己很傻。在其他一些例子中,我也将loop.run_forever误解为每次重新运行并重新订阅,但这更像是在Go中的主goroutine末尾添加一个无止境的循环,以保持运行。所以今天我还学习了更多关于Python异步的知识。谢谢!和往常一样,既然你已经指出了我首先应该找到的例子,我觉得自己很傻。在其他一些例子中,我也将loop.run_forever误解为每次重新运行并重新订阅,但这更像是在Go中的主goroutine末尾添加一个无止境的循环,以保持运行。因此,今天我还学习了更多关于Python异步的知识。