【发布时间】:2019-01-11 06:05:00
【问题描述】:
我正在一个多服务 python 应用程序中实现一个服务。此服务将等待请求被推送到 redis 队列中,并在有可用时解决它们。
async def foo():
while True:
_, request = await self.request_que.brpop(self.name)
# processing request ...
我正在将此foo() 函数添加到异步事件循环中:
loop = asyncio.new_event_loop()
asyncio.ensure_future(self.handle(), loop=loop)
loop.run_forever()
主要问题是,是否可以在多个(比如 3 个或 4 个)不同的服务上执行此操作,从而导致同时运行多个 asyncio 循环?它会损害操作系统吗?
【问题讨论】:
-
这是可能的,但在大多数情况下不需要。每个事件循环都必须在自己的线程中运行。
-
所以如果我在不同的线程中运行它们,可以吗?
-
@P.Alipoor 只要您的事件循环在不同的线程中运行,它们就不会相互干扰。但是请注意,这些循环将是独立的:例如,为一个循环创建的任务不能被其他循环等待,等等。
-
谢谢,但我的主要回答是关于操作系统的过载。
标签: python concurrency operating-system python-asyncio