Skip to content

Missing CeleryKubernetesExecutor #49897

@GrumpyCat51

Description

@GrumpyCat51

Official Helm Chart version

1.16.0 (latest released)

Apache Airflow version

3.0.0

Kubernetes Version

Minikube v1.35.0

Helm Chart configuration

executor: "CeleryKubernetesExecutor"

Docker Image customizations

No response

What happened

When selecting the CeleryKubernetesOperator as specified in the comment just above the executor setting, both the scheduler as well as the celery worker don't start as the executor cannot be loaded properly:

Traceback (most recent call last):
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/utils/module_loading.py", line 35, in import_string
    module_path, class_name = dotted_path.rsplit(".", 1)
    ^^^^^^^^^^^^^^^^^^^^^^^
ValueError: not enough values to unpack (expected 2, got 1)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/airflow/.local/bin/airflow", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/__main__.py", line 55, in main
    args.func(args)
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/cli/cli_config.py", line 48, in command
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/utils/cli.py", line 111, in wrapper
    return f(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/utils/providers_configuration_loader.py", line 55, in wrapped_function
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/cli/commands/scheduler_command.py", line 52, in scheduler
    run_command_with_daemon_option(
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/cli/commands/daemon_utils.py", line 86, in run_command_with_daemon_option
    callback()
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/cli/commands/scheduler_command.py", line 55, in <lambda>
    callback=lambda: _run_scheduler_job(args),
                     ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/cli/commands/scheduler_command.py", line 42, in _run_scheduler_job
    with _serve_logs(args.skip_serve_logs), _serve_health_check(enable_health_check):
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/contextlib.py", line 137, in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/cli/commands/scheduler_command.py", line 65, in _serve_logs
    executor_class, _ = ExecutorLoader.import_default_executor_cls()
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/executors/executor_loader.py", line 299, in import_default_executor_cls
    executor, source = cls.import_executor_cls(executor_name)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/executors/executor_loader.py", line 289, in import_executor_cls
    return import_string(executor_name.module_path), executor_name.connector_source
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.12/site-packages/airflow/utils/module_loading.py", line 37, in import_string
    raise ImportError(f"{dotted_path} doesn't look like a module path")
ImportError: CeleryKubernetesExecutor doesn't look like a module path

In version 2.10.5, the mapping of executors was set here:
https://github.com/apache/airflow/blob/2.10.5/airflow/executors/executor_loader.py#L63-L74
In version 3.0.0, this is severly reduced to
https://github.com/apache/airflow/blob/3.0.0/airflow-core/src/airflow/executors/executor_loader.py#L56-L61

I'd be happy to create a PR for this, but I'm not quite sure how it was intended to look like. Should the CeleryKubernetesExecutor be dropped in favor of specifying both executors individually, are they simply missing from in version 3.0.0, or should the logic figure out that CeleryKubernetesExecutor should split into CeleryExecutor and KubernetesExecutor?

What you think should happen instead

No response

How to reproduce

Run the helm chart with executor: "CeleryKubernetesExecutor"

Anything else

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions