Django Celery에서 사용할 다른 데이터베이스를 설정할 수 있습니까?Django Celery 및 여러 데이터베이스 (Celery, Django 및 RabbitMQ)
구성에 여러 데이터베이스가있는 프로젝트가 있고 장고 셀러리가 기본 데이터베이스를 사용하는 것을 원하지 않습니다. 나는 아직도 장고 셀러리 관리 페이지를 사용하고이 다른 데이터베이스에 저장된 결과 : 네 당신이 할 수있는
Django Celery에서 사용할 다른 데이터베이스를 설정할 수 있습니까?Django Celery 및 여러 데이터베이스 (Celery, Django 및 RabbitMQ)
구성에 여러 데이터베이스가있는 프로젝트가 있고 장고 셀러리가 기본 데이터베이스를 사용하는 것을 원하지 않습니다. 나는 아직도 장고 셀러리 관리 페이지를 사용하고이 다른 데이터베이스에 저장된 결과 : 네 당신이 할 수있는
https://docs.djangoproject.com/en/1.4/topics/db/multi-db/#automatic-database-routing
0 :은 장고 데이터베이스 라우터를 사용하여 장고 - 셀러리 모델을위한 별도의 데이터베이스를 설정할 수 있어야한다
django-celery와 함께 특별히 테스트하지는 않았지만 어떤 이유로 작동하지 않으면 django-celery (또는 Django 자체)의 버그가 수정되어야합니다.
라우터는 다음과 같이 보일 것입니다 :
class CeleryRouter(object):
"Route Celery models to separate DB."
APPS = (
'django', # Models from kombu.transport.django, if you're using Django as a message transport.
'djcelery',
)
DB_ALIAS = 'celery'
def db_for_read(self, model, **hints):
if model._meta.app_label in self.APPS:
return self.DB_ALIAS
return None
def db_for_write(self, model, **hints):
if model._meta.app_label in self.APPS:
return self.DB_ALIAS
return None
def allow_relation(self, obj1, obj2, **hints):
if (obj1._meta.app_label in self.APPS and
obj2._meta.app_label in self.APPS):
return True
return None
def allow_syncdb(self, db, model):
if db == self.DB_ALIAS:
# Only put models from APPS into Celery table (and south for
# migrations).
return model._meta.app_label in self.APPS + ('south',)
elif model._meta.app_label in self.APPS:
# Don't put Celery models anywhere else.
return False
return None
그런 다음 설정이 추가 : 두 번째 옵션의
DATABASE_ROUTERS = ['path.to.CeleryRouter']
을 읽을 수 있는지
나는 좋을 것입니다.
첫째 : 당신은 두 개의 데이터베이스를-설정하고 셀러리 작업에 명시 적으로 (예 : obj.save(using='second')
)
을 두 번째를 지정하거나 셀러리에 사용되는 두 번째 settings.py
을 만들 수 있습니다
./manage.py celeryd --settings_second
- 그때 내 셀러리를 생각 파일을 다른 설정을 사용하기로 결정한 경우 django admin 페이지는 올바른 데이터베이스를 찾지 못합니다. ( –
작업이 정확히 동일 할 것이고 현재 사용중인 사이트에 따라 별도의 데이터베이스에서 실행해야합니다 (obj.save를 사용할 수 없습니다 (using = 'second') option)?이 SaaS 제품을 개발하려고합니다. t와 각 클라이언트는 동일한 기능을 갖지만 다른 하위 도메인을 사용합니다. – thelinuxer
이 APPS에 대해 확실합니까 = (... '장고'...) 생각, 나는 그것을 얻지 못합니까? : ( –
나는 그것을 지금 얻는다, 고마워! 나는 지금 시험해 볼 것이다. –