【问题标题】:Celery as a service - PermissionError: [Errno 13] Permission denied: '/var/run/celery'Celery as a service - PermissionError: [Errno 13] Permission denied: '/var/run/celery'
【发布时间】:2021-05-16 05:49:33
【问题描述】:

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

当我启动服务时,它会返回:

PermissionError: [Errno 13] Permission denied: '/var/run/celery' 

celery.service

[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

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"

如何让它发挥作用?

【问题讨论】:

  • 如果你真的想要它在 /var/run/celery 那么你应该看看tmpfiles.d
  • @DejanLekic 我不关心目录,你推荐什么目录?
  • 恕我直言,将 Celery 放入 /opt/celery 和 PID 并在那里记录文件更容易。使其也归“芹菜”用户/组所有。

标签: python linux permissions celery systemd


【解决方案1】:

我看到了同样的问题,原来我用root权限创建了/var/log/celery/var/run/celery,看起来是这样的

drwxr-xr-x 2 root root 6 Aug  4 09:40 /var/log/celery

但我在/etc/default/celeryd 中指定了我的 celeryd 工作人员以非root 用户身份运行,假设me,所以me/var/log/celery 没有写/执行权限,所以它被拒绝了。

您可以在用户mastermaster 下创建您的/var/log/celery 目录,或者授予用户master 写入/执行权限(仅运行chmod o+w /var/log/celery 可能不安全,尽管我在测试中做了并且希望它有效.

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2016-08-17
    • 2015-01-11
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多