连接问题 - Celery/Django

5 投票
2 回答
6366 浏览
提问于 2025-04-16 09:06

漫长的夜晚……我无法让我的第二个Celery/RabbitMQ设置正常运行。

第一步

sudo rabbitmq-server

运行结果:正常!

第二步

python manage.py celeryd -l info

错误信息:[2010-12-28 03:38:24,690: ERROR/MainProcess] CarrotListener: 连接错误:套接字关闭。28秒后重试……


  • 添加了rabbitmq用户和虚拟主机
  • 更新了Django的settings.py文件

补充:

我觉得可能是因为我用.deb文件安装的,而不是用apt-get。

在卸载了deb版本并安装了apt-get版本后,我得到了这个:

invoke-rc.d: initscript rabbitmq-server, action "start" failed.
dpkg: error processing rabbitmq-server (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 rabbitmq-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

我的解决方案:

apt-get --purge remove rabbitmq-server

apt-get install rabbitmq-server

……没什么好说的……也许我需要睡觉了 :)


有没有人能给我一些调试的建议? :|

2 个回答

1

我在安装rabbitmq-server的时候遇到了这个问题,当时我正在安装chef。

对我来说,解决这个问题的方法如下。

    $ sudo vim /etc/hosts

然后添加。

    127.0.0.1 <hostname>

这里是你的主机名,如果不确定主机名,可以运行以下命令:

    $ hostname

结果就是你的主机名。只需将它添加到你的/etc/hosts文件中,然后运行:

    $ sudo service rabbitmq-server start

然后它就启动了。:)

这个方法对我有效。感谢你花时间阅读。:)

3

检查一下你正在使用的RabbitMQ的不同版本,新版本有一些新功能,可能和Celery不兼容。我这边用的是最新的2.3.1版本,是通过RabbitMQ的deb包安装的,这个版本运行得还不错,除非你需要用到SSL,这时候就得安装一个更新的Erlang/OTP版本,这个过程比较麻烦。

另外,建议你使用初始化脚本来启动消息代理:

sudo /etc/init.d/rabbitmq-server start

如果你是通过初始化脚本启动消息代理的,遇到问题时可以查看消息代理的错误日志:

sudo tail -f /var/log/rabbit@<your-local-host>.log

希望这些信息对你有帮助。

撰写回答