在我的Ubuntu 14.04 上, 使用”celery worker”命令启动celery worker时,遇到”Segmentation fault” (core dumped),如下:
jay@jay-linux:~/workspace/aew$ celery -A aew worker
-------------- celery@jay-linux v3.1.13 (Cipater)
---- **** -----
--- * *** * -- Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app: aew:0x7fd4b547af90
- ** ---------- .> transport: amqp://aew:**@192.168.217.188:5672/aew
- ** ---------- .> results: amqp
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ----
--- ***** ----- [queues]
-------------- .> celery exchange=celery(direct) key=celery
Segmentation fault (core dumped)
后来发现时系统中的 python-librabbitmq的问题,遇到这个错误的系统中的python-librabbitmq版本为1.0.3-0ubuntu1,可用命令:dpkg -l | grep python-librabbitmq 来查询.
解决方案有2个:
1. 升级python-librabbitmq到新的版本,如 1.5.2 ,可以用通过.deb包或apt-get命令来升级,也可以用pip来安装.我用pip安装默认就到1.5.2版本了,如下:
jay@jay-linux:~$ sudo apt-get remove python-librabbitmq #删除原来的包
jay@jay-linux:~$ sudo pip install librabbitmq
2. 直接删除python-librabbitmq包,这样celery会回到使用python-amqp包,这样也时可以的.
其他人也发现过这个问题,见:
https://bugs.launchpad.net/ubuntu/+source/python-librabbitmq/+bug/1353269