Python SEM_OPEN 错误
我正在尝试在服务器上使用Celery,配合RabbitMQ和Django。目前我已经安装了RabbitMQ 2.7,Python 2.7,Django 1.3,Celery 2.4.6和django-celery 2.4.2。
我按照这里的简单说明进行了操作:http://django-celery.readthedocs.org/en/latest/introduction.html
然后我尝试通过运行以下命令来启动Celery:
$ python manage.py celeryd
但是我遇到了这个错误:
Unrecoverable error: ImportError('This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770.
我做了一些研究,发现了这个bug:http://bugs.python.org/issue3770,据说已经修复了,但我想可能对Python 2.7并没有解决。
另外,我的操作系统是CentOS 4.9(最终版),而且我是从源代码构建的Python。
我启动了Python的命令行,运行了:
import multiprocessing
没有出现错误,但接着我又运行了:
from multiprocessing import synchronize
结果又出现了上面的错误。
任何帮助都非常感谢。
1 个回答
11
我在使用OpenVZ的CentOS 6时遇到了同样的问题。发现缺少了/dev/shm
,所以我需要先把它挂载上。你可以在/etc/fstab
文件中添加以下内容:
tmpfs /dev/shm tmpfs defaults 0 0
然后运行sudo mount /dev/shm
,看看能不能成功挂载。我使用的是自己编译的Python 2.7.3,这个设备在编译的时候是必须存在的,不然Python就不会支持sem_open
。在运行./configure
的时候,检查一下输出是否有以下内容:
checking for sem_open... yes