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

问题描述:

我在写一个使用aiohttp发布web api的应用程序。我还需要用另一个协议(xmpp)发布相同的API。目前解决方案是将xmpp客户端嵌入到使用常规HTTP连接(aiohttp客户端)连接到web api的同一进程中,并通过xmpp转发响应。但由于它们都在同一个过程中运行,我宁愿如果有办法“短路”连接。客户端和aiohttp网络服务器之间的短路连接

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

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

我现在有什么工作,至少不依赖于私有方法:

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

这工作,但还有改进的余地。我还使用了一个自定义的简化请求类:

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 

这就是我现在需要的。