Python 异步IO未超时
我有这两个函数,基于文档,我希望函数2在5秒内超时,但我没有看到超时发生。既然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
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
之前返回。