运行aiohttp应用程序作为协程

问题描述:

我有一个asyncio应用程序,我想使用aiohttp为它添加一个简单的REST API。据我所知,我可以创建一个aiohttp应用程序,并在另一个线程上使用aiohttp.web.run_app运行它,或者我不得不忘掉该应用程序并使用较低级别的aiohttp.web.Server API。有没有一种方法可以使用aiohttp.web.Application,然后将该web应用程序作为协同程序运行,而不是使用run_app运行aiohttp应用程序作为协程

只需开放源代码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