Python SEM_OPEN 错误

6 投票
1 回答
5551 浏览
提问于 2025-04-17 11:07

我正在尝试在服务器上使用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

撰写回答