Tengo páginas web que toman de 10 a 20 consultas de bases de datos para obtener todos los datos requeridos.¿Es posible hacer una consulta de base de datos asíncrona/paralela en una aplicación Django?
Normalmente, después de enviar una consulta, el subproceso/proceso de Django se bloquea esperando a que los resultados vuelvan, luego se reanuda la ejecución hasta que llega a la siguiente consulta.
¿Hay alguna manera de emitir todas las consultas de forma asíncrona para que puedan ser procesadas por los servidores de la base de datos en paralelo?
Estoy usando MySQL, pero también me gustaría conocer las soluciones para otras bases de datos. Por ejemplo, escuché que Postgresql tiene una biblioteca de cliente asíncrona. ¿Cómo usaría eso en este caso?
Ejecución de un servidor ampq no es obligatoria. Un simple memcache o redis queue funciona bien. Yo * no * personalmente recomendaría MongoDB. Aparte del hecho de que django-norel es en gran medida abandware (todavía está en 1.4. 1.4 fue EOLed en 2013, y extendió suppoort (seguridad, etc.) EOLed en 2015.), MongoDB realmente solo es más rápido si pierde cierto grado de cumplimiento de ACID por ejecutarlo como una tienda en memoria. Y en mi opinión eso es algo terrible que hacer con los datos de los clientes. – Shayne
El backend redis se está debatiendo por deprecation. FYI. – DylanYoung