Python 芹菜在supervisord下运行时芹菜任务无法写入主目录
我和Redis在virtualenv做经纪人经营芹菜。我有一个常用的shell脚本来启动celeryd。我的任务是将临时文件写入$HOME/.tmp。我使用mytask.delay(arg1,arg2)从Django python shell启动芹菜任务。当我手动启动芹菜-打开终端和./celeryd_启动(如下所示)时,任务按预期工作。但是,当我使用supervisor启动芹菜时,任务失败,因为它无法写入tmp文件。Supervisor配置为使用相同的shell脚本启动芹菜,并在同一用户下手动启动芹菜 我不知道发生了什么,主管芹菜进程在用于手动启动芹菜的同一用户下运行,它应该具有相同的权限。我尝试在supervisor配置文件中设置umask=000,但没有改变 是否需要更改任何主管设置以使其正常工作 我尝试将权限设置为777,并将位置更改为tmp,但没有成功。脚本使用以下命令创建临时目录Python 芹菜在supervisord下运行时芹菜任务无法写入主目录,python,celery,supervisord,Python,Celery,Supervisord,我和Redis在virtualenv做经纪人经营芹菜。我有一个常用的shell脚本来启动celeryd。我的任务是将临时文件写入$HOME/.tmp。我使用mytask.delay(arg1,arg2)从Django python shell启动芹菜任务。当我手动启动芹菜-打开终端和./celeryd_启动(如下所示)时,任务按预期工作。但是,当我使用supervisor启动芹菜时,任务失败,因为它无法写入tmp文件。Supervisor配置为使用相同的shell脚本启动芹菜,并在同一用户下手动
mkdir -p $HOME/./tmp/ && chmod a+rx $HOME/.tmp/
主管配置:
[program:apl_dev_celeryd]
; Set full path to celery program if using virtualenv
command=/home/kp/apl/dev/bin/celeryd_start
user=kp
numprocs=1
stdout_logfile=/home/kp/apl/dev/logs/worker_stdout.log
stderr_logfile=/home/kp/apl/dev/logs/worker_stderr.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 10
killasgroup=true
priority=993
芹菜
#!/bin/bash
NAME="apl_dev_celeryd" # Name of the application
DJANGODIR=/home/kp/apl/dev/p # Django project directory
APP_NAME=p # which celery app is run
LOG_LEVEL=DEBUG # valid values DEBUG, INFO, WARNING, ERROR, CRITICAL, FATAL
CONCURRENCY=2 # number of worker processes
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# Create the run directory if it doesn't exist
# Start celeryd
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec celery -A $APP_NAME worker --loglevel=$LOG_LEVEL --concurrency=$CONCURRENCY
python 2.7.3
芹菜3.1.16
Ubuntu12.04看起来监督过程没有正确处理环境变量 设置:
environment=HOME="/tmp/.tmp/"
在主管的流程配置中解决了问题