Python 异步IO未超时

Python 异步IO未超时,python,python-asyncio,Python,Python Asyncio,我有这两个函数,基于文档,我希望函数2在5秒内超时,但我没有看到超时发生。既然wait_for正在创建任务并运行run_服务,那么超时是否应该终止任务并将控制权传递回函数1?在日志中,我看到功能1持续运行的时间远远超过5s(基本上直到完成)。这里怎么了 async def run(self, obs: Observable): #function 1 await obs\ .map(self.parse)\ .map(self.ru

我有这两个函数,基于文档,我希望函数2在5秒内超时,但我没有看到超时发生。既然
wait_for
正在创建任务并运行
run_服务
,那么超时是否应该终止任务并将控制权传递回函数1?在日志中,我看到功能1持续运行的时间远远超过5s(基本上直到完成)。这里怎么了

async def run(self, obs: Observable): #function 1
        await obs\
            .map(self.parse)\
            .map(self.run_service_with_timeout)\
            .run_until_complete()

async def run_service_with_timeout(self, args): #function 2
         try:
             return await asyncio.wait_for(self.run_service(args), 5)
         except asyncio.TimeoutError:
             print("Timed out")
 

但是,对于每个可观察对象,您都会调用一次带有超时的
run\u service\u,并且在所有这些操作完成后,您会调用
run\u,直到\u complete
,这将不会有超时。是吗?@TimRoberts,我对asyncio和这个概念都是新手。如果可观察对象调用了带超时的
run\u service\u
,并且超时,那么
run\u中有什么内容可以继续运行,直到完成?这是怎么回事?抱歉,如果这是一个愚蠢的问题,请记住,在一系列
a.b().c().d()
中,
b
被调用并且必须在调用
c
之前完成,
c
必须在调用
d
之前返回。