首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >芹菜作为服务- PermissionError:[Errno 13]权限被拒绝:'/var/run/ Celery‘

芹菜作为服务- PermissionError:[Errno 13]权限被拒绝:'/var/run/ Celery‘
EN

Stack Overflow用户
提问于 2021-02-12 13:12:13
回答 2查看 1.4K关注 0票数 2

我试图创建一个运行celery的服务,但遇到了权限问题。我在许多教程中看到,pidfile路径是/var/run/celery/%n.pid,但是我的用户似乎没有写run的权限。

当我启动服务时,它返回的内容如下:

代码语言:javascript
运行
复制
PermissionError: [Errno 13] Permission denied: '/var/run/celery' 

celery.service

代码语言:javascript
运行
复制
[Unit]
Description=Celery Service
After=network.target

[Service]
Type=forking
User=master
Group=master
EnvironmentFile=/etc/conf.d/celery
WorkingDirectory=/home/master/myproject/
ExecStart=/bin/sh -c '${CELERY_BIN} multi start ${CELERYD_NODES} \
  -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
  --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'
ExecStop=/bin/sh -c '${CELERY_BIN} multi stopwait ${CELERYD_NODES} \
  --pidfile=${CELERYD_PID_FILE}'
ExecReload=/bin/sh -c '${CELERY_BIN} multi restart ${CELERYD_NODES} \
  -A ${CELERY_APP} --pidfile=${CELERYD_PID_FILE} \
  --logfile=${CELERYD_LOG_FILE} --loglevel=${CELERYD_LOG_LEVEL} ${CELERYD_OPTS}'

[Install]
WantedBy=multi-user.target

celery.conf

代码语言:javascript
运行
复制
CELERYD_NODES="celery-worker"

CELERY_BIN="/home/master/.virtualenvs/myproject/bin/celery"

# App instance to use
CELERY_APP="myproject"


CELERYD_MULTI="multi"
# Extra command-line arguments to the worker
CELERYD_OPTS="--time-limit=300 --concurrency=3"

# %n will be replaced with the first part of the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n%I.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
CELERYD_LOG_LEVEL="INFO"

怎么让它起作用?

EN

回答 2

Stack Overflow用户

发布于 2021-08-04 09:52:13

我看到了同样的问题,结果是我用根特权创建了/var/log/celery/var/run/celery,它看起来如下

代码语言:javascript
运行
复制
drwxr-xr-x 2 root root 6 Aug  4 09:40 /var/log/celery

但是我在/etc/default/celeryd中指定我的celeryd工作人员作为某个非根用户运行,假设是me,因此me没有对/var/log/celery的写/执行权限,因此它被拒绝了权限。

您可以在user mastermaster下创建您的chmod o+w /var/log/celery目录,也可以将写/执行授予用户master (简单地运行chmod o+w /var/log/celery可能是不安全的,尽管我在测试中这样做了,希望它成功了。

票数 0
EN

Stack Overflow用户

发布于 2022-09-06 10:49:29

不知道这是不是最好的方法,但这是我如何解决我的.

代码语言:javascript
运行
复制
$sudo mkdir /var/run/celery

用户和组不一定非得是芹菜。

代码语言:javascript
运行
复制
$sudo chown -R celery:celery /var/run/celery
代码语言:javascript
运行
复制
$sudo chmod o+w /var/run/celery

然后

代码语言:javascript
运行
复制
$sudo service celery restart
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66172503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档