2017-07-28 30 views
2

我有一個asyncio應用程序,我想使用aiohttp爲它添加一個簡單的REST API。據我所知,我可以創建一個aiohttp應用程序,並在另一個線程上使用aiohttp.web.run_app運行它,或者我不得不忘掉該應用程序並使用較低級別的aiohttp.web.Server API。有沒有一種方法可以使用aiohttp.web.Application,然後將該web應用程序作爲協同程序運行,而不是使用run_app運行aiohttp應用程序作爲協程

回答

3

只需開放源代碼aiohttp.web:run_apphttps://github.com/aio-libs/aiohttp/blob/master/aiohttp/web.py#L413-L467)並查看它是如何實現的。

你可以做同樣的事情,但不要叫阻止loop.run_forever()

+0

這就是我現在看到的。我希望能夠向上遊發送公關。我重構了'run_app',這樣它的大部分功能都駐留在一個名爲'launch_app'的新協程中。不幸的是,雖然這似乎工作正常,但大多數'run_app'測試目前失敗。我會嘗試更多一點,看看我能否解決問題。如果沒有,我只會嘗試在我自己的代碼中執行此操作,但是從aiohttp複製代碼聽起來有點難聽。我希望有更好的解決方案,但顯然沒有一個。 – Elektito

+1

https://github.com/aio-libs/aiohttp/issues/2121 –

+0

呵呵。儘管我使用多個搜索詞彙來搜索主題,但還是無法找到。感謝您指出了這一點。 – Elektito

相關問題