2015-08-17 20 views
16

Buduję aplikację z django, która będzie wyświetlać mapę najlepszych głosowanych przedmiotów.Najlepsza praktyka podczas używania folium na django

Nie jestem doświadczoną siecią internetową i zastanawiam się, gdzie i kiedy i gdzie powinienem ją zbudować. (Ta linia na przykład ->)

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

Teraz umieściłem w moim views.py, a to buduje mapę każdym razem, gdy użytkownik go zobaczyć, pytanie brzmi - czy nie byłoby tworzyć zbyt dużo napowietrznych obliczenia dla serwera?

Zastanowiłem się nad aktualizowaniem go co x głosów lub utrzymaniem modelu, który będzie nim zarządzał.

jaka jest najlepsza praktyka w tego rodzaju sytuacji?

Odpowiedz

8

Amit. Jeśli chodzi o folium i budowanie map dla użytkownika, tak może to zrobić ciężką pracę dla serwera, gdy wielu użytkowników chce się obliczyć. Istnieją rozwiązania dla niego:

  1. buforowanie z Redis lub Memcached (Django ma baterii do niego). W tym momencie możesz ustawić czas działania pamięci podręcznej ~ kilka sekund na kilka godzin, jeśli współrzędne są takie same. Django zapewnia buforowanie widoku, buforowanie szablonów lub inne.
  2. Zapisz wynik mapowania na db, więc jeśli użytkownik wyliczy te same współodkryte, co wczoraj - Django pobierze wynik z db i szybciej wyświetli szablon.
  3. Jeśli nic nie spełni twoich wymagań - po prostu spraw, aby django było szybsze, wyłącz nieużywane middleware, użyj gunicorn \ uwsgi do uruchomienia i wdrożenia. Znajdź na serwerze WWW więcej pamięci RAM i rdzeni procesora (przy wdrażaniu).
  4. Możesz wypróbować profilowanie swojego projektu, aby dowiedzieć się, gdzie jest najwięcej części obliczeniowej w projekcie. Po znalezieniu - przyspieszyć.
0

Buforowanie to najlepszy sposób na zrobienie tego, ale ponieważ nie jesteś doświadczonym programistą, dam ci alternatywne rozwiązanie.

Wygląda na to, że ponownie przeliczasz mapę za każdym razem, gdy użytkownik odwiedza tę sekcję witryny. Jednym z rozwiązań jest bezpośrednie połączenie z plikiem html i aktualizowanie pliku za pomocą zadania CRON lub timera Pythona co 30 minut (lub czegokolwiek, co jest potrzebne). W ten sposób obliczysz tylko raz na pół godziny dla wszystkich użytkowników.

Powiązane problemy