我正在尝试创建一个自定义异常处理程序,以便在Exception
中由协程引发asynio
时重新启动连接。
像一个协程:
@asyncio.coroutine
def process_notification(device):
results = yield from get_notifications(device)
# here I am creating other tasks
return result
自定义异常处理程序定义如下:
def custom_exception_handler(loop, context):
asyncio.base_events.BaseEventLoop.default_exception_handler(loop, context)
future = context.get('future')
#TODO: how to get the argument device and create a new task with it
在应用程序中:
...
loop = asyncio.get_event_loop()
loop.set_exception_handler(custom_exception_handler)
task = asyncio.ensure_future(process_notification(device))
...
如图所示,在TODO中,我错过了如何从任务初始调用中获取参数。