2013-01-31 1 views
3

하나의 Postgres 데이터베이스를 공유하는 Django 인스턴스가있는 여러 대의 컴퓨터가 있습니다.공유 데이터베이스가있는 특정 인스턴스에 셀러리 작업자를 연결할 수 있습니까?

간편하게 Django 브로커와 Postgres 데이터베이스를 사용하여 Celery를 실행하고 싶습니다. 나는 많은 양의 작업을 수행 할 필요가 없기 때문에 다른 브로커를 사용할 필요가 없습니다.

로컬 파일 저장소에서 작동하는 셀러리 작업을 실행하려고합니다. 즉, 셀러리 작업자가 이벤트를 트리거 한 동일한 시스템에있는 태스크 만 실행하기를 원합니다.

현재 설정에서 가능합니까? 그렇지 않다면 어떻게해야합니까? 각 시스템에 대한 로컬 Redis 인스턴스?

답변

2

나는이 작업을 수행하는 방법을 알아 냈습니다. 멋진 라우팅이나 브로커가 필요 없습니다.

celeryd 인스턴스를 호스트 다음에 명명 된 특수 큐로 실행합니다. 그때 호스트 이름을 저장하는 settings.py에서 호스트 이름 설정

./manage.py celeryd -Q celery,`hostname` 

: 각 장고 경우에

import socket 
CELERY_HOSTNAME = socket.gethostname() 

를이 다른 값을가집니다이처럼 자동으로 수행 할 수 있습니다.

my_task.apply_async(args=[one, two], queue=settings.CELERY_HOSTNAME) 
: 나는 비동기 내 작업을 호출 할 때

나는 다음이 큐를 지정할 수 있습니다

관련 문제