普通用户无法运行celeryd,但root可以运行

1 投票
1 回答
1172 浏览
提问于 2025-04-16 21:21

我已经安装了 celeryddjango-celery

我通过 python manage.py celeryd 来运行它。

如果我用管理员权限运行,就会收到这个提示:

警告/主进程] /opt/python27/lib/python2.7/site-packages/celery-2.2.7-py2.7.egg/celery/apps/worker.py:124: 用户警告:以超级用户权限运行 celeryd 是不推荐的! "以超级用户权限运行 celeryd 是不推荐的!"

但是如果我用普通用户来运行,就会出现这个:

[2011-07-12 11:13:56,508: WARNING/MainProcess] Traceback (most recent call last):
[2011-07-12 11:13:56,508: WARNING/MainProcess] File "manage.py", line 14, in <module>
[2011-07-12 11:13:56,508: WARNING/MainProcess] execute_manager(settings)
[2011-07-12 11:13:56,508: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager
[2011-07-12 11:13:56,508: WARNING/MainProcess] utility.execute()
[2011-07-12 11:13:56,508: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute
[2011-07-12 11:13:56,509: WARNING/MainProcess] self.fetch_command(subcommand).run_from_argv(self.argv)
[2011-07-12 11:13:56,509: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv
[2011-07-12 11:13:56,509: WARNING/MainProcess] self.execute(*args, **options.__dict__)
[2011-07-12 11:13:56,509: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute
[2011-07-12 11:13:56,509: WARNING/MainProcess] output = self.handle(*args, **options)
[2011-07-12 11:13:56,509: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/django_celery-2.2.4-py2.7.egg/djcelery/management/commands/celeryd.py", line 21, in handle
[2011-07-12 11:13:56,510: WARNING/MainProcess] worker.run(*args, **options)
[2011-07-12 11:13:56,510: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/celery-2.2.7-py2.7.egg/celery/bin/celeryd.py", line 96, in run
[2011-07-12 11:13:56,510: WARNING/MainProcess] return self.app.Worker(**kwargs).run()
[2011-07-12 11:13:56,510: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/celery-2.2.7-py2.7.egg/celery/apps/worker.py", line 135, in run
[2011-07-12 11:13:56,510: WARNING/MainProcess] self.run_worker()
[2011-07-12 11:13:56,510: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/celery-2.2.7-py2.7.egg/celery/apps/worker.py", line 235, in run_worker
[2011-07-12 11:13:56,510: WARNING/MainProcess] worker.start()
[2011-07-12 11:13:56,511: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/celery-2.2.7-py2.7.egg/celery/worker/__init__.py", line 250, in start
[2011-07-12 11:13:56,511: WARNING/MainProcess] blocking(component.start)
[2011-07-12 11:13:56,511: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/kombu-1.1.6-py2.7.egg/kombu/syn.py", line 14, in blocking
[2011-07-12 11:13:56,511: WARNING/MainProcess] return __sync_current(fun, *args, **kwargs)
[2011-07-12 11:13:56,511: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/kombu-1.1.6-py2.7.egg/kombu/syn.py", line 30, in __blocking__
[2011-07-12 11:13:56,511: WARNING/MainProcess] return fun(*args, **kwargs)
[2011-07-12 11:13:56,511: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/celery-2.2.7-py2.7.egg/celery/concurrency/base.py", line 64, in start
[2011-07-12 11:13:56,511: WARNING/MainProcess] self.on_start()
[2011-07-12 11:13:56,512: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/celery-2.2.7-py2.7.egg/celery/concurrency/processes/__init__.py", line 37, in on_start
[2011-07-12 11:13:56,512: WARNING/MainProcess] self._pool = self.Pool(processes=self.limit, **self.options)
[2011-07-12 11:13:56,512: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/celery-2.2.7-py2.7.egg/celery/concurrency/processes/pool.py", line 482, in __init__
[2011-07-12 11:13:56,512: WARNING/MainProcess] self._setup_queues()
[2011-07-12 11:13:56,512: WARNING/MainProcess] File "/opt/python27/lib/python2.7/site-packages/celery-2.2.7-py2.7.egg/celery/concurrency/processes/pool.py", line 654, in _setup_queues
[2011-07-12 11:13:56,526: WARNING/MainProcess] self._inqueue = SimpleQueue()
[2011-07-12 11:13:56,526: WARNING/MainProcess] File "/opt/python27/lib/python2.7/multiprocessing/queues.py", line 328, in __init__
[2011-07-12 11:13:56,527: WARNING/MainProcess] self._rlock = Lock()
[2011-07-12 11:13:56,527: WARNING/MainProcess] File "/opt/python27/lib/python2.7/multiprocessing/synchronize.py", line 121, in __init__
[2011-07-12 11:13:56,527: WARNING/MainProcess] SemLock.__init__(self, SEMAPHORE, 1, 1)
[2011-07-12 11:13:56,527: WARNING/MainProcess] File "/opt/python27/lib/python2.7/multiprocessing/synchronize.py", line 49, in __init__
[2011-07-12 11:13:56,528: WARNING/MainProcess] sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
[2011-07-12 11:13:56,528: WARNING/MainProcess] OSError
[2011-07-12 11:13:56,528: WARNING/MainProcess] :
[2011-07-12 11:13:56,529: WARNING/MainProcess] [Errno 13] Permission denied
[2011-07-12 11:13:56,531: INFO/MainProcess] process shutting down

我已经给 celery 的所有文件添加了组的读写执行权限,并且把所有 celery 文件的组改成了用户,但还是出现同样的错误。

1 个回答

2

你没有给运行celery的用户提供对共享内存(/dev/shm)的读写权限,而这个共享内存是通过多进程来访问的。

你应该把以下内容添加到你的 /etc/fstab 文件中:

none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0

然后重启你的Linux系统。


补充:

你也可以尝试手动给 /dev/shm 添加权限:

sudo chmod u+rw /dev/shm

撰写回答