我很难让Python Asyncio NATS.io按顺序运行。我有两个类:Account和Bridge Account负责应用程序的逻辑,它通过Bridge与外部服务通过NATS.io进行通信。
Main文件:
loop = asyncio.get_event_loop()
account = Account(loop, options)
asyncio.async(account.start())
loop.run_forever()Account类:
class Account:
bridge = Bridge()
def connect(self):
result = self.bridge.connect(self.id)
return resultBridge类:
def connect(self, account_id):
data = None
try:
response = yield from self.nc.timed_request("bank.account.connect",
BankRequest(
method="connect",
data={...}
), 10)
data = json.loads(response.data.decode())
except ErrTimeout:
status = Messages.REQUEST_TIMED_OUT
return Result(data=data)我需要从account类中的任何地方调用account.connect()并获得连接的结果(按顺序)。现在我正在获取generator对象
发布于 2017-04-05 17:30:10
您的connect()方法可能应该是协程:
class Account:
bridge = Bridge() # you probably want to put this in `def __init__(self)`!
@asyncio.coroutine
def connect(self):
result = yield from self.bridge.connect(self.id)
return result
class Bridge:
@asyncio.coroutine
def connect(self, account_id):
data = None
try:
response = yield from self.nc.timed_request("bank.account.connect",
BankRequest(
method="connect",
data={...}
), 10)
data = json.loads(response.data.decode())
except ErrTimeout:
status = Messages.REQUEST_TIMED_OUT
return Result(data=data)和:
resp = yield from account.connect()https://stackoverflow.com/questions/43211117
复制相似问题