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