Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

208
Visualizações
error durante la prueba de Django 1.8 con múltiples bases de datos

Estoy moviendo un proyecto Django 1.8 de una configuración de base de datos única a una configuración de escritor/lector. Me encontré con el problema descrito en el error 23718 de Django, pero las soluciones descritas no parecían ayudar.

¿Alguien se ha encontrado con problemas similares? Los segmentos de código relevantes están a continuación:

Enrutador:

 class DatabaseRouter(object): """Router to handle separation of reads and writes.""" def db_for_read(self, model, **hints): """Reads go to a read replica.""" return 'read' def db_for_write(self, model, **hints): """Writes always go to default.""" return 'default' def allow_relation(self, obj1, obj2, **hints): """Allow relations bet/n objects in the same DB cluster.""" db_list = ('default', 'read') if obj1._state.db in db_list and obj2._state.db in db_list: return True return None def allow_migrate(self, db, app_label, model_name=None, **hints): """All models end up in this pool.""" return True

configuración de base de datos relevante

 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': DB_NAME, 'USER': DB_USER, 'PASSWORD': DB_PASS, 'HOST': DB_WRITE }, 'read': { 'ENGINE': 'django.db.backends.mysql', 'NAME': DB_NAME, 'USER': DB_USER, 'PASSWORD': DB_PASS, 'HOST': DB_READ, 'TEST': { 'MIRROR': 'default', }, } } DATABASE_ROUTERS = ['my_project.routers.DatabaseRouter']

evitar el caso de prueba de replicación:

 class ReplicationTestCase(TestCase): @classmethod def setUpClass(cls): super(ReplicationTestCase, cls).setUpClass() connections['read']._orig_cursor = connections['read'].cursor connections['read'].cursor = connections['default'].cursor @classmethod def tearDownClass(cls): connections['read'].cursor = connections['read']._orig_cursor super(ReplicationTestCase, cls).tearDownClass()

¿Sale algo? Estoy feliz de proporcionar stacktraces de nuestro entorno de prueba si eso también fuera útil. ¡Gracias!

about 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda