Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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 3.x 回调在nats中不起作用。请在python nats.aio.client中订阅_Python 3.x_Async Await_Coroutine_Nats.io - Fatal编程技术网

Python 3.x 回调在nats中不起作用。请在python nats.aio.client中订阅

Python 3.x 回调在nats中不起作用。请在python nats.aio.client中订阅,python-3.x,async-await,coroutine,nats.io,Python 3.x,Async Await,Coroutine,Nats.io,我正在尝试使用nats.aio.client模块进行简单的发布-订阅,但回调不起作用。下面是我的代码 从nats.aio.client将客户端导入为NAT NAT类: def初始化(自身): self.nc=NATS() 主文件 import asyncio from nats_client import NAT nat = NAT() nats_connection = asyncio.get_event_loop() nats_connection.run_until_complete(n

我正在尝试使用nats.aio.client模块进行简单的发布-订阅,但回调不起作用。下面是我的代码 从nats.aio.client将客户端导入为NAT

NAT类: def初始化(自身): self.nc=NATS()

主文件

import asyncio
from nats_client import NAT

nat = NAT()
nats_connection = asyncio.get_event_loop()
nats_connection.run_until_complete(nat.run())
nats_connection.run_until_complete(nat.subscribe_msg())
nats_connection.run_until_complete(nat.publish_msg())
#nats_connection.close()

如果我遗漏了任何信息,请告诉我,我们将非常感谢您的帮助

我认为您的程序可能退出得太早,因此无法发布或接收消息,以下是有关如何在NATS中启动服务的完整示例:

导入异步IO
从nats.aio.client将客户端导入为NAT
异步def运行(循环):
nc=NATS()
异步def已断开_cb():
打印(“断开连接…”)
异步定义已重新连接\u cb():
打印(“已重新连接…”)
等待nc连接(“127.0.0.1”,
重新连接的断路器=重新连接的断路器,
断开连接的断路器=断开连接的断路器,
最大重新连接尝试次数=-1,
循环=循环)
异步def帮助请求(msg):
subject=msg.subject
reply=msg.reply
data=msg.data.decode()
打印(“收到关于“{subject}{reply}”的消息:{data}”。格式(
主题=主题,回复=回复,数据=数据)
等待nc.发布(回复,b'I can help')
#使用名为“workers”的队列分发请求
#在订户中。
等待nc。订阅(“帮助”、“工人”、帮助请求)
打印(“侦听有关“帮助”主题的请求…”)
对于范围(1000000)内的i:
等待asyncio.sleep(1)
尝试:
响应=等待nc.请求(“帮助”,b'hi')
打印(答复)
例外情况除外,如e:
打印(“错误:”,e)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
loop=asyncio.get\u event\u loop()
循环。运行_直到_完成(运行(循环))
loop.run_forever()
loop.close()

wallyqs谢谢。正如你所说,程序退出得太早了。所以我们能够解决这个问题
import asyncio
from nats_client import NAT

nat = NAT()
nats_connection = asyncio.get_event_loop()
nats_connection.run_until_complete(nat.run())
nats_connection.run_until_complete(nat.subscribe_msg())
nats_connection.run_until_complete(nat.publish_msg())
#nats_connection.close()