2015-07-02 3 views
1

Я использую supervisord для запуска сельдерея как демона, но он дает мне ошибку ImportError: No module named tasks worker. Я могу запустить его из оболочки без супервизора. Мой конфигурационный файл для supervisord, как:Ошибка импорта Python с Supervisord

[program:celery] 
directory=/home/yongfengzhang/videomaker 
environment=PYTHONPATH="/home/yongfengzhang/videomaker:/home/yongfengzhang/videomaker/videomaker:$PYTHONPATH",DJANGO_SETTINGS_MODULE="videomaker.settings" 
;command=/home/yongfengzhang/Envs/videomake/bin/celery -A "tasks worker" --loglevel=INFO --concurrency=4 
command=celery -A "tasks worker" --loglevel=INFO --concurrency=4 
process_name=%(program_name)s ; process_name expr (default %(program_name)s) 
numprocs=1 
user=yongfengzhang     ; setuid to this UNIX account to run the program 
stdout_logfile=/home/yongfengzhang/logs/celery/celery.log 
stderr_logfile=/home/yongfengzhang/logs/celery/celery.err 
autostart=true 
autorestart=true 

Так под /home/yongfengzhang/videomaker у меня есть tasks.py, который определяет экземпляр сельдерея и функции задачи (не показан здесь):

app = Celery('tasks', backend='redis://localhost', broker='amqp://myuser:[email protected]:5672/myvhost') 

При непосредственном запуске сельдерей в этой папке (~/videomaker), все в порядке. Envs/videomake - это место, где находится мой virtualenv. В папке находится __init__.py. Любой вход будет оценен с большой благодарностью. Большое спасибо.

ответ

1

Я только что узнал, что здесь не так. Вы не можете использовать двойные кавычки для группировки своих аргументов. Выполните следующие действия должны работать:

command=/home/yongfengzhang/Envs/videomake/bin/celery -A tasks worker --loglevel=INFO --concurrency=4 

Аргументы tasks worker не должны быть в двойных кавычках. Благодарю.