几乎是这个SO问题的精确副本,但答案对我没有帮助。我已经安装了Erlang,Celery和RabbitMQ,并设置了Celery使用AMQP作为后端和代理。我完全遵循了快速入门示例(创建一个将两个数字相加的任务(,但是当我发出result.ready()
命令时,Celery 进程只是挂起。
- 这不是身份验证问题(四重检查和测试无效登录(
- 根据之前的SO问题,这不是磁盘空间不足错误(>800mb免费(
- 工作线程已启动并正在运行("使用者:准备接受任务!
- MQ 已启动并正在运行("代理正在运行"(
- 我可以看到 Celery 连接到 RabbitMQ("接受 AMQP 连接 (ip -> ip("(
- 我认为这是我的 Python 脚本没有正确连接到 Celery 工作进程的问题。可能是因为我试图在树莓派上运行它吗?操作系统的可用内存非常低。
我在这里扯头发。欢迎任何帮助!
经过大量的试验和错误,我发现将以下内容添加到我的celeryconfig.py
中会导致调用ready()
返回True
。也许不是一个理想的解决方案,但至少是一个可以让进程解开卡住并返回适当值的解决方案。
CELERY_ALWAYS_EAGER = True
在实施此解决方法之前(在我看来,这不是真正的解决方案(,您可能应该阅读文档以确保您了解其作用;
。任务将在本地执行,而不是发送到队列。
这否定了当初使用芹菜的原因,所以最后我放弃了,用了Redis代替AMQP。就像一个魅力。