python - tag - Mejores prácticas cuando se usa folium en django
ifequal django (2)
Amit. En cuanto al folium y la creación de mapas para el usuario, sí, podría dificultar el trabajo del servidor, cuando muchos usuarios desean calcular. Hay soluciones para ello:
- Almacenamiento en caché con Redis o Memcached (Django tiene baterías para ello). En este punto, puede configurar la duración de la memoria caché ~ unos segundos a varias horas, si las coordenadas son las mismas. Django proporciona almacenamiento en caché de vista, almacenamiento en caché de plantillas u otros.
- Guarde el resultado de la asignación a db, por lo que si el usuario calcula los mismos datos que ayer, Django tomará el resultado de db y se mostrará más rápido en la plantilla.
- Si nada supera sus requisitos, solo haga que django sea más rápido, apague los dispositivos no utilizados, use gunicorn / uwsgi para ejecutar y desplegar. Localice al servidor web más RAM y núcleos de CPU (en el despliegue).
- Puede intentar crear un perfil de su proyecto, para encontrar dónde está la parte más computacional de su proyecto. Cuando hayas encontrado - hazlo más rápido.
Estoy creando una aplicación con django, que mostrará un mapa de los elementos más votados.
No soy una web con experiencia desarrollada y me pregunto dónde, cuándo y dónde debería construirlos. (esta línea por ejemplo ->)
map_osm.create_map(path=''osm.html'')
En este momento, coloqué en my views.py, y está creando el mapa cada vez que un usuario lo ve, la pregunta es: ¿no crearía demasiados cálculos de sobrecarga para el servidor?
Pensé en actualizarlo también cada x voto, o mantener un modelo que lo gestione.
¿Cuál es la mejor práctica en este tipo de situación?
Cachear es la mejor manera de hacerlo, pero como no es un desarrollador experimentado, le daré una solución alternativa.
Parece que está recalculando el mapa cada vez que un usuario visita esa sección de su sitio web. Una solución es vincular directamente al archivo html, y tener el archivo actualizado a través de una tarea CRON o un temporizador Python cada 30 minutos (o lo que sea que necesite). De esta manera, solo calculará una vez cada media hora para todos sus usuarios.