Должна быть возможность создать отдельную базу данных для моделей django-celery с использованием маршрутизаторов базы данных Django:
https://docs.djangoproject.com/en/1.4/topics/db/multi-db/#automatic-database-routing
Я не проверял это специально с 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']