当西芹盯着看的时候,它说它有这样一个后端:
-**---------- .> app: app.celery:0x7f5fe5f80b80
-**---------- .> transport: redis://redis:6379/10
-**---------- .> results: redis://redis:6379/11
-***--- * --- .> concurrency: 4 (prefork)
但是当我尝试运行一个复杂的任务时,我得到了一个错误:
NotImplementedError: Starting chords requires a result backend to be configured
celery 的配置如下:
Celery(__name__, broker="redis://redis:6379/10", backend="redis://redis:6379/11", tasks_acks_late=True)
任务是用 @app.task(base=MyBaseTask, bind=True)
,并且顶层任务的构造方式将使其中包含和弦。顶层任务的执行方式为 my_task.delay()
,这是引发异常的行。
我明白为什么我需要结果备份来运行我的任务,但我不明白为什么它认为一个没有配置。
你知道我会错过什么吗?
编辑:可能需要注意的是,我在两个k8s pod上部署了相同的代码库,一个作为api服务器,另一个作为celery 工人。我打电话来 .delay()
在api服务器上,并期望辅助进程拿起任务并运行它。这是召唤 .delay()
在引发异常的api pod上。两个豆荚中的每一个都示例化了自己的celery 应用程序,所以我想知道这是否是导致我的问题的原因?
暂无答案!
目前还没有任何答案,快来回答吧!