Перейти к содержанию

Поддержка Django

Django Autodiscover.

autodiscover_tasks(app, modules=['tasks'])

Автоматически импортирует указанные модули из всех INSTALLED_APPS, чтобы зарегистрировать задачи в QTasks.

Parameters:

Name Type Description Default
app QueueTasks

приложение.

required
modules List[str]

Модули для автодискавери. По умолчанию: ["tasks"].

['tasks']
Source code in src/qtasks/contrib/django/autodiscover.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def autodiscover_tasks(app, modules: List[str] = ["tasks"]):
    """Автоматически импортирует указанные модули из всех INSTALLED_APPS, чтобы зарегистрировать задачи в QTasks.

    Args:
        app (QueueTasks): приложение.
        modules (List[str]): Модули для автодискавери. По умолчанию: `["tasks"]`.
    """
    for app_name in settings.INSTALLED_APPS:
        try:
            module = importlib.import_module(app_name)
        except Exception as e:
            logger.warning(f"[QTasks] Не удалось импортировать {app_name}: {e}")
            continue

        try:
            for module_name in modules:
                if module_has_submodule(module, module_name) or find_spec(f"{app_name}.{module_name}"):
                    importlib.import_module(f"{app_name}.{module_name}")
                    logger.debug(f"[QTasks] Найден {module_name}.py в {app_name}")
        except Exception as e:
            logger.exception(f"[QTasks] Ошибка при импорте {app_name}.{module_name}: {e}")