Airflow CeleryExecutor - 'int' 对象在 Celery 中没有属性 'startswith'

art*_*ski 3 python celery directed-acyclic-graphs airflow airflow-scheduler

Airflow 2.0 在我的开发环境中正在排队但未启动任务。

DAG 和池设置有效,但每个 dag 中的所有任务都是在queued我触发它们时才运行的,并且从未运行。

当我输入 时airflow celery worker,出现以下错误:

Traceback (most recent call last):
  File "/usr/local/bin/airflow", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/site-packages/airflow/__main__.py", line 40, in main
    args.func(args)
  File "/usr/local/lib/python3.8/site-packages/airflow/cli/cli_parser.py", line 48, in command
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/airflow/utils/cli.py", line 92, in wrapper
    return f(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/airflow/cli/commands/celery_command.py", line 188, in worker
    _run_worker(options=options, skip_serve_logs=skip_serve_logs)
  File "/usr/local/lib/python3.8/site-packages/airflow/cli/commands/celery_command.py", line 94, in _run_worker
    celery_app.worker_main(options)
  File "/usr/local/lib/python3.8/site-packages/celery/app/base.py", line 365, in worker_main
    return instantiate(
  File "/usr/local/lib/python3.8/site-packages/celery/bin/base.py", line 283, in execute_from_commandline
    self.maybe_patch_concurrency(argv)
  File "/usr/local/lib/python3.8/site-packages/celery/bin/base.py", line 315, in maybe_patch_concurrency
    maybe_patch_concurrency(argv, *pool_option)
  File "/usr/local/lib/python3.8/site-packages/celery/__init__.py", line 143, in maybe_patch_concurrency
    pool = _find_option_with_arg(argv, short_opts, long_opts)
  File "/usr/local/lib/python3.8/site-packages/celery/__init__.py", line 95, in _find_option_with_arg
    if arg.startswith('-'):
AttributeError: 'int' object has no attribute 'startswith'
Run Code Online (Sandbox Code Playgroud)

在我的暂存、生产环境中,运行任务以及检查airflow celery worker. 它将启动或警告我它已经在运行(如预期)。

envs 之间没有区别,但我猜问题是在服务器上最近部署之后发生的。

正如我所看到的,芹菜收到了错误的论据:

AttributeError: 'int' object has no attribute 'startswith'
Run Code Online (Sandbox Code Playgroud)

但是如何跟踪 Airflow 试图传递哪些参数到 celery 呢?我不知道如何调试这个。

art*_*ski 7

通过将 celery 升级到最新版本来4.4.2解决5.1.2

似乎版本4.4.2(这是气流部门之一)有一个带有参数的错误。

如果有任何其他建议如何解决此问题,请随时在此处提出。