Python Glossary English

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Сообщить о неточности