【问题标题】:Multiple asyncio loops多个异步循环
【发布时间】: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


【解决方案1】:

简单的回答:是的。没事。我之前实现了一项服务,该服务在一个 asyncio 循环上运行,并产生在自己的循环上运行的其他进程(在同一台机器上)。

【讨论】:

    猜你喜欢
    • 2018-10-17
    • 1970-01-01
    • 2021-12-12
    • 2017-11-03
    • 2018-09-18
    • 2018-07-29
    • 2021-12-24
    • 2021-11-07
    • 2018-07-09
    相关资源
    最近更新 更多