【发布时间】: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