【发布时间】:2020-06-29 16:12:50
【问题描述】:
我有一个包装函数,它可能会运行一个 courutine 多次:
async def _request_wraper(self, courutine, attempts=5):
for i in range(1, attempts):
try:
task_result = await asyncio.ensure_future(courutine)
return task_result
except SOME_ERRORS:
do_smth()
continue
协程可能是从不同的异步函数创建的,它可以接受不同数量的必要/不必要的参数。 当我进行第二次循环迭代时,出现错误 --> 无法重用已经等待的协程
我尝试制作 courutine 的副本,但是使用方法 copy 和 deepcopy 是不可能的。 运行 coroutine 两次的可能解决方案是什么?
【问题讨论】:
-
我看到了,但它并没有回答我的问题。就我而言,我没有统一的接口如何为异步函数提供参数。在包装器中运行的函数可能有不同的参数。
-
您可能不希望在对
range的调用中使用1,。这将导致您进行attempts - 1尝试。 -
在这个特定问题中,迭代次数无关紧要
标签: python python-asyncio