运行aiohttp应用程序作为协程
问题描述:
我有一个asyncio应用程序,我想使用aiohttp为它添加一个简单的REST API。据我所知,我可以创建一个aiohttp应用程序,并在另一个线程上使用aiohttp.web.run_app
运行它,或者我不得不忘掉该应用程序并使用较低级别的aiohttp.web.Server
API。有没有一种方法可以使用aiohttp.web.Application
,然后将该web应用程序作为协同程序运行,而不是使用run_app
?运行aiohttp应用程序作为协程
答
只需开放源代码aiohttp.web:run_app
(https://github.com/aio-libs/aiohttp/blob/master/aiohttp/web.py#L413-L467)并查看它是如何实现的。
你可以做同样的事情,但不要叫阻止loop.run_forever()
。
这就是我现在看到的。我希望能够向上游发送公关。我重构了'run_app',这样它的大部分功能都驻留在一个名为'launch_app'的新协程中。不幸的是,虽然这似乎工作正常,但大多数'run_app'测试目前失败。我会尝试更多一点,看看我能否解决问题。如果没有,我只会尝试在我自己的代码中执行此操作,但是从aiohttp复制代码听起来有点难听。我希望有更好的解决方案,但显然没有一个。 – Elektito
https://github.com/aio-libs/aiohttp/issues/2121 –
呵呵。尽管我使用多个搜索词汇来搜索主题,但还是无法找到。感谢您指出了这一点。 – Elektito