2013-07-19 2 views
2

저는 지금 셀러리 멍청한데, 시작하려고합니다. 저는 redis storage 백엔드로 Django 1.4 + django-celery + celery 3.0.21을 실행하고 있습니다. 나는 통해 '수동'을 실행하기 위해 노동자와 celerybeat를 얻을 수 있습니다 :Celeryd가 장고 프로젝트의 설정을 찾지 못했습니다.

python manage.py celery worker -E -B --loglevel=INFO -n w1.manual

내가 초기화 - 스크립트로이 이동하려는. 그래서 셀러리가 제공하는 두 개의 init 스크립트를 설치했습니다. 내가 원하는대로 그들을 실행할 수 있습니다 스크립트는 잘 작동합니다. 그러나 스크립트로 시작된 작업자는 실패합니다. 내 프로젝트 설정을 찾지 못하는 것 같습니다. 다음은/etc/기본/celeryd에서 내 설정 파일의 내용을 다음과 같습니다

# Name of nodes to start 
# here we have a single node 
CELERYD_NODES="w1" 

# or we could have three nodes: 
#CELERYD_NODES="w1 w2 w3" 

# Where to chdir at start. 
CELERYD_CHDIR="/var/www/www_project_com/" 

# Extra arguments to celeryd 
CELERYD_OPTS="--time-limit=300 --concurrency=8" 

# Name of the celery config module. 
CELERY_CONFIG_MODULE="celeryconfig" 

# %n will be replaced with the nodename. 
CELERYD_LOG_FILE="/var/log/celery/%n.log" 
CELERYD_PID_FILE="/var/run/celery/%n.pid" 

# Workers should run as an unprivileged user. 
CELERYD_USER="www-data" 
CELERYD_GROUP="www-data" 

# Name of the projects settings module 
export DJANGO_SETTINGS_MODULE="settings" 

내 설정 파일은 실제로 지역/생산/등으로 구분된다. 내가 할 config 파일의 마지막 줄을 변경하려고 시도했습니다

/var/www/www_project_com/project/settings/production.py 

: 및 생산 설정이 여기에 있습니다

export DJANGO_SETTINGS_MODULE="project.settings.production" 

그러나 차이도하지 않습니다 것 같았다.

은 내 사용자 정의 사용자 및 그룹을 사용하기 때문에이기 때문에 init 스크립트가/etc/default/celery 설정 파일을 선택한다는 것을 알고 있습니다.

이 로그가 보여 있기 때문에 프로세스가 실패 것이 분명하다 : 나는 가정

consumer: Cannot connect to amqp://[email protected]:5672//: [Errno 111] Connection refused. 

은 기본 설정입니다. 내 장고 프로젝트가 연결 문자열 사용 레디 스를 사용하도록 구성되어 있습니다 :

export DJANGO_SETTINGS_MODULE="settings.production" 
이 결과

:이 분류하는 또 다른 시도로

BROKER_URL = 'redis://localhost:6379/0' 

을, 내가 마지막 라인을 설정하려고했습니다

[2013-07-19 05:31:48,117: ERROR/MainProcess] Unrecoverable error: ImportError('No module named settings',) 

로그에 있습니다.

내가 뭘 잘못하고 있니?

답변

2

DJANGO_SETTINGS_MODULE 구성을 사용하려면 CELERY_CONFIG_MODULE의 구성이 설정되지 않았는지 확인하십시오.

+0

답변 해 주셔서 감사합니다. 나는'/ var/www/www_project_com/celeryconfig.py'에서 프로젝트의 루트에있는 새로운 파일'celeryconfig.py'을 만들었습니다. 셀리스트 관련 설정을 모두이 파일에 복사하고 다시 시도했습니다. 전혀 차이가 없다. = ( – mkoistinen

+0

Ah ha! 그럼. 해결책은'CELERY_CONFIG_MODULE = "..."'줄을 주석 처리하는 것이 었습니다. 이것은 분명히'DJANGO_SETTINGS_MODULE' 줄보다 우선합니다. 나는 당신에게 크레딧을주고 싶습니다. "... 또는 DJANGO_SETTINGS_MODULE = ...을 사용하고 싶다면, CELERY_CONFIG_MODULE 줄을 주석으로 처리 하시겠습니까?"라고 대답한다면, 대답을 업데이트 할 수 있습니까? 올바른지 확인하십시오. – mkoistinen

+0

지금 듣기 좋게 대답합니다. 나는 대답을 업데이트했고, 이제는 세팅을 celeryconfig.py로 옮겼고 CELERY_CONFIG_MODULE이 업데이트 된 설정 파일을 가리키고있는 이유가 궁금합니다. –

관련 문제