Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

127
Vistas
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!

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda