Ruff asyncio-dangling-task (RUF006)

asyncio-dangling-task в Ruff проверяет код на предупреждение RUF006. Правило относится к группе Ruff-specific rules.

Почему это неправильно

Эти проверки реализованы самим Ruff и закрывают практические проблемы, которые не относятся к одному внешнему плагину.

Если валидатор показывает это предупреждение, исправьте место, на которое указывает Ruff, ориентируясь на смысл правила asyncio-dangling-task и пример ниже.

Пример ошибки

import asyncio

for i in range(10):
    # This creates a weak reference to the task, which may be garbage
    # collected at any time.
    asyncio.create_task(some_coro(param=i))

Как правильно

import asyncio

background_tasks = set()

for i in range(10):
    task = asyncio.create_task(some_coro(param=i))

    # Add task to the set. This creates a strong reference.
    background_tasks.add(task)

    # To prevent keeping references to finished tasks forever,
    # make each task remove its own reference from the set after
    # completion:
    task.add_done_callback(background_tasks.discard)

Автоисправление

Ruff не предлагает автоисправление для этого правила.