1

几乎与这个 SO question完全相同,但答案对我没有帮助。我已经安装了 Erlang、Celery 和 RabbitMQ 并设置了 Celery 以使用 AMQP 作为后端和代理。我完全遵循了快速入门示例(创建一个将两个数字相加的任务),但是当我开始发出result.ready()命令时,Celery 进程就挂起。

  • 这不是身份验证问题(四次检查和测试无效登录)
  • 根据上一个 SO 问题(> 800mb free),这不是磁盘空间不足错误
  • 工作人员已启动并正在运行(“消费者:准备接受任务!”)
  • MQ 已启动并正在运行(“代理运行”)
  • 我可以看到 Celery 连接到 RabbitMQ(“接受 AMQP 连接(ip -> ip)”)
  • 我认为这是我的 Python 脚本没有正确连接到 Celery 工作进程的问题。可能是因为我试图在 Raspberry Pi 上运行它吗?操作系统的可用内存非常低。

我在这里扯我的头发。欢迎任何帮助!

4

1 回答 1

2

经过大量试验和错误后,我发现将以下内容添加到我的celeryconfig.py结果中会导致调用ready()返回True。也许不是一个理想的解决方案,但至少有一个可以让流程不卡住并返回适当的值。

CELERY_ALWAYS_EAGER = True

在实施此解决方法之前(在我看来,这不是真正的解决方案),您可能应该阅读文档以确保您了解它的作用;

...任务将在本地执行,而不是发送到队列。

哪一种否定了首先使用Celery的原因,所以最后我放弃了,使用Redis而不是AMQP。奇迹般有效。

于 2013-10-11T13:17:37.650 回答