芹菜挂在准备好了()

时间:2013-10-09 16:00:05

标签: python rabbitmq celery

几乎是this SO question的完全重复,但答案对我没有帮助。我已经安装了Erlang,Celery和RabbitMQ并设置了Celery以使用AMQP作为后端和代理。我完全按照quickstart example(创建一个将两个数字加在一起的任务),但是当我发出result.ready()命令时,Celery进程就会挂起。

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

我的头发在这里撕裂了。欢迎任何帮助!

1 个答案:

答案 0 :(得分:1)

经过大量的反复试验后,我发现在我的celeryconfig.py中添加以下内容会导致ready()回复True。也许不是一个理想的解决方案,但至少有一个解决方案可以解决问题并返回正确的值。

CELERY_ALWAYS_EAGER = True

在实施此解决方法之前(在我看来,这不是一个真正的解决方案)你应该阅读docs以确保你明白它的作用;

  

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

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