aiohttp事件循环中的后台进程

时间:2017-05-23 15:30:46

标签: python-3.x celery aiohttp

我有一个接受帖子请求的网络服务。发布请求指定要在后台执行的特定作业,该作业修改用于以后分析的数据库。请求的发送方不关心结果,只需要从Web服务接收202确认。

到目前为止如何实施: Flask Web服务将获取http请求,并将必要的参数添加到任务队列(rq workers),并返回确认。一个单独的rq工作进程侦听队列并处理该作业。

我们现在已切换到aiohttp,并意识到Web服务现在可以使用aiohttp.ensure_future()方法在自己的事件循环中调度实际的作业请求。

然而,这会模糊Web服务器和任务队列之间的界限。从积极的方面来说,它不需要管理rq工人。

这被认为是一种好习惯吗?

1 个答案:

答案 0 :(得分:0)

如果您的任务不占用大量CPU-是的,这是一个好习惯。
但是,如果是这样,则需要将它们移至单独的服务或使用run_in_executor()。在其他情况下,您的aiohttp事件循环将被此任务阻止,服务器将无法接受新请求。