Django Celery 实现 - OSError : [Errno 38] 功能未实现
我安装了django-celery,然后尝试启动工作服务器,但出现了一个OSError,提示某个功能没有实现。我在一个VPS上运行的是CentOS 5.4(最终版):
. broker -> amqp://guest@localhost:5672/
. queues ->
. celery -> exchange:celery (direct) binding:celery
. concurrency -> 4
. loader -> djcelery.loaders.DjangoLoader
. logfile -> [stderr]@WARNING
. events -> OFF
. beat -> OFF
[2010-07-22 17:10:01,364: WARNING/MainProcess] Traceback (most recent call last):
[2010-07-22 17:10:01,364: WARNING/MainProcess] File "manage.py", line 11, in <module>
[2010-07-22 17:10:01,364: WARNING/MainProcess] execute_manager(settings)
[2010-07-22 17:10:01,364: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 438, in execute_manager
[2010-07-22 17:10:01,364: WARNING/MainProcess] utility.execute()
[2010-07-22 17:10:01,364: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/django/core/management/__init__.py", line 379, in execute
[2010-07-22 17:10:01,365: WARNING/MainProcess] self.fetch_command(subcommand).run_from_argv(self.argv)
[2010-07-22 17:10:01,365: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/django/core/management/base.py", line 191, in run_from_argv
[2010-07-22 17:10:01,365: WARNING/MainProcess] self.execute(*args, **options.__dict__)
[2010-07-22 17:10:01,365: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/django/core/management/base.py", line 218, in execute
[2010-07-22 17:10:01,365: WARNING/MainProcess] output = self.handle(*args, **options)
[2010-07-22 17:10:01,365: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/django_celery-2.0.0-py2.6.egg/djcelery/management/commands/celeryd.py", line 22, in handle
[2010-07-22 17:10:01,366: WARNING/MainProcess] run_worker(**options)
[2010-07-22 17:10:01,366: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/celery-2.0.1-py2.6.egg/celery/bin/celeryd.py", line 385, in run_worker
[2010-07-22 17:10:01,366: WARNING/MainProcess] return Worker(**options).run()
[2010-07-22 17:10:01,366: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/celery-2.0.1-py2.6.egg/celery/bin/celeryd.py", line 218, in run
[2010-07-22 17:10:01,366: WARNING/MainProcess] self.run_worker()
[2010-07-22 17:10:01,366: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/celery-2.0.1-py2.6.egg/celery/bin/celeryd.py", line 312, in run_worker
[2010-07-22 17:10:01,367: WARNING/MainProcess] worker.start()
[2010-07-22 17:10:01,367: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/celery-2.0.1-py2.6.egg/celery/worker/__init__.py", line 206, in start
[2010-07-22 17:10:01,367: WARNING/MainProcess] component.start()
[2010-07-22 17:10:01,367: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/celery-2.0.1-py2.6.egg/celery/concurrency/processes/__init__.py", line 54, in start
[2010-07-22 17:10:01,367: WARNING/MainProcess] maxtasksperchild=self.maxtasksperchild)
[2010-07-22 17:10:01,367: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/celery-2.0.1-py2.6.egg/celery/concurrency/processes/pool.py", line 448, in __init__
[2010-07-22 17:10:01,368: WARNING/MainProcess] self._setup_queues()
[2010-07-22 17:10:01,368: WARNING/MainProcess] File "/usr/local/lib/python2.6/site-packages/celery-2.0.1-py2.6.egg/celery/concurrency/processes/pool.py", line 564, in _setup_queues
[2010-07-22 17:10:01,368: WARNING/MainProcess] self._inqueue = SimpleQueue()
[2010-07-22 17:10:01,368: WARNING/MainProcess] File "/usr/local/lib/python2.6/multiprocessing/queues.py", line 315, in __init__
[2010-07-22 17:10:01,368: WARNING/MainProcess] self._rlock = Lock()
[2010-07-22 17:10:01,368: WARNING/MainProcess] File "/usr/local/lib/python2.6/multiprocessing/synchronize.py", line 117, in __init__
[2010-07-22 17:10:01,369: WARNING/MainProcess] SemLock.__init__(self, SEMAPHORE, 1, 1)
[2010-07-22 17:10:01,369: WARNING/MainProcess] File "/usr/local/lib/python2.6/multiprocessing/synchronize.py", line 49, in __init__
[2010-07-22 17:10:01,369: WARNING/MainProcess] sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
[2010-07-22 17:10:01,369: WARNING/MainProcess] OSError
[2010-07-22 17:10:01,369: WARNING/MainProcess] :
[2010-07-22 17:10:01,369: WARNING/MainProcess] [Errno 38] Function not implemented
我是不是完全没救了,还是有简单的方法可以解决这个问题?
1 个回答
13
在Ubuntu 10上也遇到了同样的问题,即使给了shmem完全的权限,问题还是存在...
最后终于解决了,发现/dev/shm没有被挂载。所以我做了以下几步:
1. 在fstab文件中添加shm
2. 执行挂载shm
3. 给/dev/shm设置了完全的777权限