Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 芹菜在supervisord下运行时芹菜任务无法写入主目录_Python_Celery_Supervisord - Fatal编程技术网

Python 芹菜在supervisord下运行时芹菜任务无法写入主目录

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脚本启动芹菜,并在同一用户下手动

我和Redis在virtualenv做经纪人经营芹菜。我有一个常用的shell脚本来启动celeryd。我的任务是将临时文件写入$HOME/.tmp。我使用mytask.delay(arg1,arg2)从Django python shell启动芹菜任务。当我手动启动芹菜-打开终端和./celeryd_启动(如下所示)时,任务按预期工作。但是,当我使用supervisor启动芹菜时,任务失败,因为它无法写入tmp文件。Supervisor配置为使用相同的shell脚本启动芹菜,并在同一用户下手动启动芹菜

我不知道发生了什么,主管芹菜进程在用于手动启动芹菜的同一用户下运行,它应该具有相同的权限。我尝试在supervisor配置文件中设置umask=000,但没有改变

是否需要更改任何主管设置以使其正常工作

我尝试将权限设置为777,并将位置更改为tmp,但没有成功。脚本使用以下命令创建临时目录

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/"
在主管的流程配置中解决了问题