gpt4 book ai didi

python - supervisord celery 的用户不正确

转载 作者:太空狗 更新时间:2023-10-29 21:38:04 25 4
gpt4 key购买 nike

我有一些使用 celery 运行的周期性任务(由 supervisord 守护),但是在尝试在主目录中为我为主管进程设置的用户创建一个目录后,我收到了“权限被拒绝”错误。在查看正在运行的 celery 任务中的 os.environ 字典后,我注意到 USER var 设置为“root”,而不是我在 supervisord 中设置的用户 celery 的配置。

这是我的 /usr/local/etc/supervisord.conf 的样子:

[unix_http_server]
file=/tmp/supervisor.sock
chmod=0777

[supervisord]
logfile=/var/log/supervisord.log
pidfile=/var/run/supervisord.pid

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock

[program:celery]
command=/home/<USER>/.virtualenvs/sync/bin/celeryd --beat --loglevel=INFO
environment=PYTHONPATH=/home/<USER>/apps/sync
directory=/home/<USER>/apps/sync
user=<USER>
numprocs=1
stdout_logfile=/var/log/celeryd.log
stderr_logfile=/var/log/celeryd.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 30

这可能是什么原因造成的?任何帮助将不胜感激!

最佳答案

我认为这是由于您没有设置 HOME 和 USER 环境变量造成的。如果您的子流程依赖于那些被设置的,那么在使用“user=”选项时这是必要的。

Subprocess Environment 上的 supervisord 文档之后:

No shell is executed by supervisord when it runs a subprocess, so environment variables such as USER, PATH, HOME, SHELL, LOGNAME, etc. are not changed from their defaults or otherwise reassigned

所以也许试试:

environment=USER=<USER>,HOME=/home/<USER>,PYTHONPATH=/home/<USER>/apps/sync

关于python - supervisord celery 的用户不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9034709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com