2012-01-27 21 views
7

Kerevizle çalıştığım bazı periyodik görevlerim var (süpervizör tarafından yönetiliyor), ancak ana bilgisayardaki bir dizini oluşturmaya çalıştıktan sonra yöneticinin denetleme süreci için kurduğum kullanıcı için bir "izin reddedildi" hatası. Çalışan bir kereviz görevinde os.environ dict baktıktan sonra USER var 'root' için ayarlanmış olduğunu fark ettim ve benim kereviz için benim süpervizör yapılandırmasında kurduğum kullanıcı değil. Bu neden olabilecek neHatalı kullanıcı için denetleyici celeryd

[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 

:

Bu benim /usr/local/etc/supervisord.conf benziyor ne? Herhangi bir yardım süper takdir edilecektir!

cevap

9

Bunun EV ve KULLANICI ortam değişkenlerini ayarlamadığınız gerçeğinden kaynaklandığına inanıyorum. Bu, alt işleminiz ayarlananlara dayanıyorsa "kullanıcı =" seçeneğini kullanırken gereklidir. Subprocess Environment üzerinde supervisord belgelere sonra

:

Hiçbir kabuk, bir alt işlemi çalışır, bu nedenle vb KULLANICI, PATH, EV, KABUK, LOGNAME gibi ortam değişkenleri değiştirildi değilken supervisord tarafından yürütülür

onların

environment=USER=<USER>,HOME=/home/<USER>,PYTHONPATH=/home/<USER>/apps/sync 
: varsayılan veya başka Bu yüzden belki denemek

yeniden