저는 지금 셀러리 멍청한데, 시작하려고합니다. 저는 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',)
로그에 있습니다.
내가 뭘 잘못하고 있니?
답변 해 주셔서 감사합니다. 나는'/ var/www/www_project_com/celeryconfig.py'에서 프로젝트의 루트에있는 새로운 파일'celeryconfig.py'을 만들었습니다. 셀리스트 관련 설정을 모두이 파일에 복사하고 다시 시도했습니다. 전혀 차이가 없다. = ( – mkoistinen
Ah ha! 그럼. 해결책은'CELERY_CONFIG_MODULE = "..."'줄을 주석 처리하는 것이 었습니다. 이것은 분명히'DJANGO_SETTINGS_MODULE' 줄보다 우선합니다. 나는 당신에게 크레딧을주고 싶습니다. "... 또는 DJANGO_SETTINGS_MODULE = ...을 사용하고 싶다면, CELERY_CONFIG_MODULE 줄을 주석으로 처리 하시겠습니까?"라고 대답한다면, 대답을 업데이트 할 수 있습니까? 올바른지 확인하십시오. – mkoistinen
지금 듣기 좋게 대답합니다. 나는 대답을 업데이트했고, 이제는 세팅을 celeryconfig.py로 옮겼고 CELERY_CONFIG_MODULE이 업데이트 된 설정 파일을 가리키고있는 이유가 궁금합니다. –