Millorar la velocitat de les migracions en Django

10 de Marzo de 2016 · 1 min de lectura

Logo APSL

Recentment ens hem topat amb un projecte que tenia un munt de migracions (unes 650) d'un munt d'aplicacions (unes 28). Resultava que aquest nombre tant elevat de migracions repercutia a l'hora de crear i aplicar migracions noves, fins al punt de durar més de 20 minuts, tant a l'hora de generar-les com d'aplicar-les.  

En un moment del desenvolupament del projecte, en el qual hem tingut els tres entorns (desenvolupament, pre-producció i producció) igualats a nivell de migracions, hem de decidit esborrar totes les migracions, inicialitzar la taula de migracions de Django, crear les migracions de les aplicacions "built-in" en mode "--fake", crear les migracions inicials de cada aplicació i, finalment, aplicar les migracions de totes les aplicacions en mode "--fake-initial". Els passos, de manera resumida, serien:

  1. Esborrar tots els directoris de "migrations" de totes les aplicacions
  2. Esborrar tots els registres de la taula "django_migrations" delete from django_migrations;
  3. Executar el migrate de les built-in apps de django: python manage.py migrate --fake
  4. Per a cada aplicació, generar la migració inicial: python manage.py makemigrations
  5. Finalment executar el fake de totes les migracions inicials generades: python manage.py migrate --fake-initial

El resultat ha estat que, migracions que tardaven més de vint minuts ara se generen i s'apliquen en qüestió de segons.


Comparte este artículo
Artículos recientes