Skip to content

Поддержка Django

Django Autodiscover.

autodiscover_tasks(app, modules=None)

Automatically imports the specified modules from all INSTALLED_APPS to register tasks with QTasks.

Parameters:

Name Type Description Default
app QueueTasks

application.

required
modules List[str]

Modules for auto-discovery. Default: ["tasks"].

None
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
38
39
40
41
42
43
44
def autodiscover_tasks(app, modules: Optional[list[str]] = None):
    """
    Automatically imports the specified modules from all INSTALLED_APPS to register tasks with QTasks.

    Args:
        app(QueueTasks): application.
        modules (List[str]): Modules for auto-discovery. Default: `["tasks"]`.
    """
    modules = modules or ["tasks"]

    for app_name in settings.INSTALLED_APPS:
        try:
            module = importlib.import_module(app_name)
        except Exception as e:
            logger.warning(f"[QTasks] Failed to import {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] Found {module_name}.py in {app_name}")
        except Exception as e:
            logger.exception(
                f"[QTasks] Error importing {app_name}.{module_name}: {e}"
            )