首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:异步NATS.io阻塞

Python:异步NATS.io阻塞
EN

Stack Overflow用户
提问于 2017-04-04 23:11:45
回答 1查看 363关注 0票数 0

我很难让Python Asyncio NATS.io按顺序运行。我有两个类:AccountBridge Account负责应用程序的逻辑,它通过Bridge与外部服务通过NATS.io进行通信。

Main文件:

代码语言:javascript
复制
loop = asyncio.get_event_loop()
account = Account(loop, options)
asyncio.async(account.start())
loop.run_forever()

Account类:

代码语言:javascript
复制
class Account:
    bridge = Bridge()

    def connect(self):
        result = self.bridge.connect(self.id)
        return result

Bridge类:

代码语言:javascript
复制
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对象

EN

回答 1

Stack Overflow用户

发布于 2017-04-05 17:30:10

您的connect()方法可能应该是协程:

代码语言:javascript
复制
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)

和:

代码语言:javascript
复制
resp = yield from account.connect()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43211117

复制
相关文章

相似问题

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