客户端和aiohttp Web服务器之间的短路连接

时间:2017-02-23 14:31:14

标签: python python-asyncio aiohttp

我正在编写一个使用aiohttp发布web api的应用程序。我还需要使用另一个协议(xmpp)发布相同的api。目前解决方案是将xmpp客户端嵌入到使用常规HTTP连接(aiohttp客户端)连接到web api的相同进程中,并通过xmpp转发响应。但是因为它们都在同一个过程中运行,所以如果有一种方法可以“短路”连接,我会更喜欢。

我正在考虑创建一个Request实例并将其传递给aiohttp Web应用程序中的方法(可能是_handle()方法?)来处理它。

有关如何以(最好)非hackish方式执行此操作的任何提示?

1 个答案:

答案 0 :(得分:0)

我现在有一些工作,至少不依赖私人方法:

req = Request(...)
req.match_info = await app.router.resolve("/api/1.0/status")
response = req.match_info.handler(req)

这很有效,但还有改进的余地。我也使用自定义的简化Request类:

from yarl import URL

class XmppHttpRequest:
    def __init__(self, method, path):
        self.method = method
        self.path = path
        self.rel_url = URL(path)
        self.url = self.rel_url
        self.match_info = None

这就是我现在所需要的。