Python 3.4+Асинхронное программированиепонятие
asyncio.Handle
event loop
Объект запланированного обратного вызова: его возвращают loop.call_soon() и loop.call_soon_threadsafe(). Позволяет отменить вызов до того, как он случится.
Синтаксис
handle = loop.call_soon(callback, *args); handle.cancel()
Handle — не задача и не корутина: await на нём невозможен, результата у колбэка нет, а исключение из колбэка цикл только запишет в лог. Отменённый handle.cancel() вызов просто не выполнится, и handle.cancelled() вернёт True. Если нужно дождаться результата или отменить работу с откатом — берите asyncio.create_task() и await, а не call_soon().
Примеры
import asyncio
async def main():
loop = asyncio.get_running_loop()
h1 = loop.call_soon(print, 'первый')
h2 = loop.call_soon(print, 'второй')
h2.cancel()
await asyncio.sleep(0.01) # → первый — «второй» не напечатан
print(type(h1).__name__, h2.cancelled()) # → Handle True
asyncio.run(main())
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности