This is an automated email from the ASF dual-hosted git repository.
Miretpl pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 8d35eebaca1 Honor verbose logging for Celery workers (#69828)
8d35eebaca1 is described below
commit 8d35eebaca13ebf26f58752021102c91e00d6046
Author: jj.lee <[email protected]>
AuthorDate: Sat Jul 25 01:24:23 2026 +0900
Honor verbose logging for Celery workers (#69828)
---
.../airflow/providers/celery/cli/celery_command.py | 3 ++
.../tests/unit/celery/cli/test_celery_command.py | 33 ++++++++++++++++++++++
2 files changed, 36 insertions(+)
diff --git
a/providers/celery/src/airflow/providers/celery/cli/celery_command.py
b/providers/celery/src/airflow/providers/celery/cli/celery_command.py
index 987233241e1..3a953f2a26b 100644
--- a/providers/celery/src/airflow/providers/celery/cli/celery_command.py
+++ b/providers/celery/src/airflow/providers/celery/cli/celery_command.py
@@ -310,6 +310,9 @@ def worker(args):
if not celery_log_level:
celery_log_level = config.get("logging", "LOGGING_LEVEL")
+ if args.verbose:
+ celery_log_level = "DEBUG"
+
# Setup Celery worker
options = [
"worker",
diff --git a/providers/celery/tests/unit/celery/cli/test_celery_command.py
b/providers/celery/tests/unit/celery/cli/test_celery_command.py
index b189f0f9078..8a91aac7efc 100644
--- a/providers/celery/tests/unit/celery/cli/test_celery_command.py
+++ b/providers/celery/tests/unit/celery/cli/test_celery_command.py
@@ -233,6 +233,39 @@ class TestWorkerStart:
mock_set_mp.assert_called_once_with("celery")
[email protected]("conf_stale_bundle_cleanup_disabled")
+class TestWorkerLogLevel:
+ @pytest.fixture(autouse=True)
+ def _disable_cli_action_logging(self):
+ with (
+ patch("airflow.utils.cli.cli_action_loggers.on_pre_execution"),
+ patch("airflow.utils.cli.cli_action_loggers.on_post_execution"),
+ ):
+ yield
+
+ @classmethod
+ def setup_class(cls):
+ with conf_vars({("core", "executor"): "CeleryExecutor"}):
+ importlib.reload(executor_loader)
+ importlib.reload(cli_parser)
+ cls.parser = cli_parser.get_parser()
+
+ @conf_vars({("logging", "celery_logging_level"): "INFO"})
+ @mock.patch("airflow.providers.celery.cli.celery_command.setup_locations")
+ @mock.patch("airflow.providers.celery.cli.celery_command.Process")
+ @mock.patch("airflow.providers.celery.executors.celery_executor.app")
+ def test_worker_verbose_overrides_configured_celery_loglevel(
+ self, mock_celery_app, mock_popen, mock_locations
+ ):
+ mock_locations.return_value = ("pid_file", None, None, None)
+ args = self.parser.parse_args(["celery", "worker", "--verbose",
"--skip-serve-logs"])
+
+ celery_command.worker(args)
+
+ worker_options = mock_celery_app.worker_main.call_args[0][0]
+ assert worker_options[worker_options.index("--loglevel") + 1] ==
"DEBUG"
+
+
@pytest.mark.backend("mysql", "postgres")
@pytest.mark.usefixtures("conf_stale_bundle_cleanup_disabled")
class TestWorkerMultiTeam: