首页 文章

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

提问于
浏览
1

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

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

关于如何以(最好)非hackish方式做到这一点的任何提示?

1 回答

  • 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
    

    这就是我现在所需要的 .

相关问题