2014-05-23 2 views
1

Celery로 실행해야하는 장고 응용 프로그램 (pcycler)이 있습니다. Supervisor와 함께 프로덕션 환경에이를 배포하려고합니다. 저를 제공Supervisor Directory가 Celery 프로그램에 전파되지 않음

supervisorctl start celery

:

은 내가 실행 오류가 발생

celery: ERROR (abnormal termination)

다음은 시작에 supervisor.conf에 포함되어 내 celery.conf 파일입니다.

[program:celery] 
command=/webapps/pcyclerenv/bin/celery -A pcycler worker -l info 

directory=/webapps/pcyclerenv/pcycler 
user=pcycleruser 
numprocs=1 
stdout_logfile=/webapps/pcyclerenv/logs/celeryd_stdout.log 
stderr_logfile=/webapps/pcyclerenv/logs/celeryd_stderr.log 
redirect_stderr=false 
autostart=true 
autorestart=true 
startsecs=10 
stopwaitsecs=600 
killasgroup=true 
priority=998 

celeryd_stderr.log의 내용은 다음과 같습니다

Traceback (most recent call last): 
    File "/webapps/pcyclerenv/bin/celery", line 11, in <module> 
    sys.exit(main()) 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/__main__.py", line 30, in main 
    main() 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 81, in main 
    cmd.execute_from_commandline(argv) 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 769, in execute_from_commandline 
    super(CeleryCommand, self).execute_from_commandline(argv))) 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/bin/base.py", line 304, in execute_from_commandline 
    argv = self.setup_app_from_commandline(argv) 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/bin/base.py", line 464, in setup_app_from_commandline 
    self.app = self.find_app(app) 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/bin/base.py", line 484, in find_app 
    return find_app(app, symbol_by_name=self.symbol_by_name) 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/app/utils.py", line 222, in find_app 
    sym = symbol_by_name(app, imp=imp) 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/bin/base.py", line 487, in symbol_by_name 
    return symbol_by_name(name, imp=imp) 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/kombu/utils/__init__.py", line 92, in symbol_by_name 
    module = imp(module_name, package=package, **kwargs) 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/utils/imports.py", line 101, in import_from_cwd 
    return imp(module, package=package) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
ImportError: No module named pcycler 

당연히, 나는이 오류 복제 할 수 있는지, 자신이이 프로그램을 실행하기로 결정 :

[email protected]:/webapps/pcyclerenv/pcycler$ pwd 
/webapps/pcyclerenv/pcycler 

[email protected]:/webapps/pcyclerenv/pcycler$ /webapps/pcyclerenv/bin/celery -A pcycler worker -l info 

(... text and pickle deprecation warnings ...) 

[2014-05-23 14:52:36,053: WARNING/MainProcess] /webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/fixups/django.py:233: UserWarning: Using settings.DEBUG leads to a memory leak, never use this setting in production environments! 
    warnings.warn('Using settings.DEBUG leads to a memory leak, never ' 

[2014-05-23 14:52:36,066: WARNING/MainProcess] [email protected] ready. 

을 그렇게 작동합니다. 그러나 다음과 같은 잘못된 디렉토리에있을 때 :

[email protected]:/webapps/pcyclerenv/pcycler$ cd .. 

[email protected]:/webapps/pcyclerenv$ pwd 
/webapps/pcyclerenv 

[email protected]:/webapps/pcyclerenv$ /webapps/pcyclerenv/bin/celery -A pcycler worker -l info 

Traceback (most recent call last): 
    File "/webapps/pcyclerenv/bin/celery", line 11, in <module> 
    sys.exit(main()) 
    File "/webapps/pcyclerenv/local/lib/python2.7/site-packages/celery/__main__.py", line 30, in main 
    main() 

(... exact same error as above ...) 

ImportError: No module named pcycler 

오류 로그에있는 것과 정확히 같은 오류가 발생합니다! 이로 인해 관리자가 실행 중일 때 디렉토리가 제대로 변경되지 않는다고 가정합니다.

tldr : supervisorctl을 사용하여 명령을 실행할 때 내 supervisor.conf의 디렉토리가 적용되지 않는 이유는 무엇입니까?

답변

7

오류를 발견 했으니, 은 정말 벙어리입니다.

감독자의 conf 파일은 이렇게 순서 특정 :

[program:celery] 
directory=/webapps/pcyclerenv/pcycler 
command=/webapps/pcyclerenv/bin/celery -A pcycler worker -l info 
(... the rest ..) 

내가 데 문제를 해결합니다.

+0

나를 위해 작동하지 않습니다. ( – Hanynowsky

관련 문제