Python Glossary English

Python 3.7+Асинхронное программированиефункция

asyncio.current_task()

интроспекция

Возвращает задачу Task, которая выполняется сейчас, или None, если код идёт вне задачи (например, в обычном колбэке цикла).

Синтаксис

asyncio.current_task(loop=None)

Удобна, чтобы задача отменила сама себя, узнала своё имя или исключила себя из all_tasks(). Вне работающего цикла бросает RuntimeError, а не возвращает None: None означает «цикл есть, но мы в колбэке, а не в задаче». Внутри asyncio.run() главная корутина тоже обёрнута в задачу, по умолчанию с именем вида Task-1.

Примеры

import asyncio
async def worker():
    print(asyncio.current_task().get_name())  # → загрузчик
async def main():
    await asyncio.create_task(worker(), name='загрузчик')
    loop = asyncio.get_running_loop()
    loop.call_soon(lambda: print(asyncio.current_task()))  # → None — колбэк, а не задача
    await asyncio.sleep(0.01)
asyncio.run(main())

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности