【问题标题】:starting celery worker from python script results in error - "click.exceptions.UsageError: No such command" using celery==5.1.2从 python 脚本启动 celery worker 会导致错误 - “click.exceptions.UsageError: No such command” using celery==5.1.2
【发布时间】:2021-09-20 01:33:50
【问题描述】:

目录结构:

这是我的cw_manage_integration/psa_integration/api_service/sync_config/init.py

from celery import Celery
from kombu import Queue

from psa_integration.celery_config import QUEUE, USER, MAX_PRIORITIES_SUPPORT_AT_TIME

BROKER = "amqp://{0}:{1}@{2}/xyz".format("abc", "pqrst", "x.x.x.x)
APP = Celery(
"sync service",
broker=BROKER,
backend='rpc://',
include=["psa_integration.sync_service.alert_sync.alert",
"psa_integration.sync_service.tenant_sync.tenant",
"psa_integration.sync_service.alert_sync.update_status"]
)
APP.conf.task_queues = [
Queue(QUEUE, queue_arguments={'x-max-priority': MAX_PRIORITIES_SUPPORT_AT_TIME}),
]

以下是cw_manage_integration/start_service.py

"""Scrip to start Sync service via Celery."""
from psa_integration.utils.logger import *
from psa_integration import sync_service
from psa_integration.celery_config import CELERY_CONCURRENCY

APP = sync_service.APP

try:
    APP.start(["__init__.py", "worker", "-c", str(CELERY_CONCURRENCY)])
except Exception as scheduler_exception:
    logging.exception("Exception occurred while starting services. Exception = {}".format(scheduler_exception))

当我使用 celery 版本 celery==4.4.5 运行命令 python3 start_service.py 时,启动 celery worker 就可以正常工作。

但是当使用 celery==5.1.2 运行相同的 start_service.py 时,它会抛出以下错误:

>python3 start_service.py

MainProcess INFO 2021-07-07 16:27:42,725 all_logs
79 : 开始 MainProcess INFO 2021-07-07 16:27:42,725 all_logs
80:日志文件名: /home/sdodmane/PycharmProjects/cw_manage_integration1/cw_manage_integration/psa_integration/logs/worker_2021-07-07.log MainProcess INFO 2021-07-07 16:27:42,725 all_logs
81:级别:4 Traceback(最近一次调用最后一次):文件 "/home/sdodmane/.local/lib/python3.8/site-packages/click_didyoumean/init.py", 第 34 行,在 resolve_command 返回 super(DYMMixin, self).resolve_command(ctx, args) 文件“/usr/lib/python3/dist-packages/click/core.py”,第 1188 行,在 解决命令 ctx.fail('No such command "%s".' % original_cmd_name) File "/usr/lib/python3/dist-packages/click/core.py",第 496 行,失败 raise UsageError(message, self) click.exceptions.UsageError: No such command "init.py".

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件“start_service.py”,第 10 行, 在 APP.start(["init.py", "worker", "-c", str(CELERY_CONCURRENCY)]) 文件 “/usr/local/lib/python3.8/dist-packages/celery/app/base.py”,第 371 行, 在开始 celery.main(args=argv,standalone_mode=False) 文件“/usr/lib/python3/dist-packages/click/core.py”,第 717 行,在 main rv = self.invoke(ctx) 文件“/usr/lib/python3/dist-packages/click/core.py”,第 1132 行,在调用中 cmd_name, cmd, args = self.resolve_command(ctx, args) 文件 "/home/sdodmane/.local/lib/python3.8/site-packages/click_didyoumean/init.py", 第 42 行,在 resolve_command 引发 click.exceptions.UsageError(error_msg, error.ctx) click.exceptions.UsageError: No such command "init.py".

在这种情况下,无法区分 celery==4.4.5 和 celery==5.1.2。 请帮我解决这个问题。

【问题讨论】:

    标签: python-3.x celery


    【解决方案1】:

    目前,start 方法在当前 (5.1.2) 版本中被破坏。 它已被修复 (https://github.com/celery/celery/pull/6825/files) 但尚未发布。希望下一个版本v5.1.3 能解决这个问题。

    【讨论】:

      猜你喜欢
      • 2014-12-24
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      • 2018-12-13
      • 2021-01-10
      • 2017-06-11
      • 2021-11-08
      相关资源
      最近更新 更多