我正在使用 Celery 和 RabbitMQ 作为代理,redis作为结果后端。我现在手动将任务分派给工作人员。我可以在发送任务后立即获取任务 ID。但实际上芹菜工人并没有在他们身上工作。我在磁盘上看不到结果文件。后来当我想用AsyncResult
来检查结果时,我当然得到了AttributeError: 'DisabledBackend' object has no attribute '_get_task_meta_for'
我检查了RabbitMQ和redis,它们都在工作(redis-cli ping
)。日志还说Connected to amqp://myuser:**@127.0.0.1:5672/myvhost
.
有趣的事情是,我实际上有另一个远程服务器使用连接到代理的任务。它还记录"连接到amqp",但两个节点看不到彼此:mingle: searching for neighbors, mingle: all alone
。该系统以前工作过。我想知道我应该从哪里开始寻找线索。谢谢。
关于AttributeError
消息,添加类似于下面的backend
配置设置应该有助于解决它:
app = Celery('tasks', broker='pyamqp://guest@localhost//', backend='amqp://')
我的芹菜版本是 4.2.1。我将CELERY_RESULT_BACKEND设置为"rpc://"并解决此问题。
另请参阅芹菜result_backend配置文档