2017-02-23 52 views
1

我在寫一個使用aiohttp發佈web api的應用程序。我還需要用另一個協議(xmpp)發佈相同的API。目前解決方案是將xmpp客戶端嵌入到使用常規HTTP連接(aiohttp客戶端)連接到web api的同一進程中,並通過xmpp轉發響應。但由於它們都在同一個過程中運行,我寧願如果有辦法「短路」連接。客戶端和aiohttp網絡服務器之間的短路連接

我想創建一個Request實例,並將其傳遞給aiohttp web應用程序中的方法(可能是_handle()方法?)來處理它。

有關如何以(最好)非黑客方式做到這一點的任何提示?

回答

0

我現在有什麼工作,至少不依賴於私有方法:

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 

這就是我現在需要的。

相關問題