2015-08-17 13 views
16

Sto costruendo un'applicazione con django, che sta visualizzando una mappa degli articoli più votati.Best practice per l'utilizzo di folium su django

Non sono un web esperto e mi chiedo dove e quando e dove dovrebbe costruirle. (Questa linea, ad esempio ->)

map_osm.create_map(path='osm.html') 

In questo momento ho messo nel mio views.py, e sta costruendo la mappa ogni volta che un utente visualizzarlo, la domanda è - non sarebbe creare troppa testa calcolo per il server?

Ho pensato di aggiornarlo come ogni x voti, o di mantenere un modello che lo gestirà.

qual è la migliore pratica in questo tipo di situazione?

risposta

8

Amit. Per quanto riguarda il folium e la creazione di mappe per l'utente, sì, potrebbe fare un duro lavoro per il server, quando molti utenti vogliono calcolare. Ci sono soluzioni per esso:

  1. Caching con Redis o Memcached (Django è dotato di batterie per esso). A questo punto puoi impostare la durata della cache da ~ pochi secondi a diverse ore, se le coordinate sono le stesse. Django fornisce la memorizzazione nella cache delle viste, il caching dei modelli o altro.
  2. Salva il risultato dell'acquisizione su db, quindi se l'utente esegue le stesse coordinate di ieri, Django prenderà il risultato di db e mostrerà più rapidamente il modello.
  3. Se le tue esigenze non bastano: basta fare django più veloce, disattivare i middleware inutilizzati, usare gunicorn \ uwsgi per eseguire e distribuire. Individuare sul server Web più core per CPU e RAM (su distribuzione).
  4. Puoi provare a profilare il tuo progetto, così puoi trovare dove è la parte più informatica del tuo progetto. Quando l'hai trovato, fallo più velocemente.
0

Il caching è il modo migliore per andare, ma dal momento che non sei uno sviluppatore esperto ti darò una soluzione alternativa.

Sembra che tu stia ricalcolando la mappa ogni volta che un utente visita quella sezione del tuo sito web. Una soluzione è quella di collegarsi direttamente al file html e avere il file aggiornato tramite un'attività CRON o un timer Python ogni 30 minuti (o qualsiasi altra cosa sia necessaria). In questo modo calcolerai solo una volta ogni mezz'ora per tutti i tuoi utenti.