如何从上下文管理资源内部启动独立的上下文管理资源

2024-04-27 04:50:45 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我正在使用消息传递协议A作为资源在上接收消息。在这些消息中,是关于如何连接到各种设备的配置,并随时收到。收到新配置时,脚本将使用消息传递协议B连接到设备

消息传递协议A和B有时都会断开连接,因此我想使用上下文管理器来清理和重新连接。我的问题是,消息传递协议B的资源是从协议A的上下文管理器中启动的。因此,当A的连接丢失时,B的所有连接也会被清除。相反

async def run_resource_A():
  async with resource_A():
    while True:
      configuration = await receive_some_new_configuration()
      asyncio.create_task(run_resource_B(configuration))

async def run_resource_B(configuration):
    with resource_B(configuration):
      # do stuff that shouldnt be killed when resourceA is lost