2015-08-17 5 views
16

Я создаю приложение с django, которое будет отображать карту высших проголосовавших элементов.Лучшая практика при использовании folium на django

Я не опытный веб-сайт, и я задаюсь вопросом, где и когда и где должна строиться их карта. (Эта линия, например ->)

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

Прямо сейчас я помещен в моем views.py, и строит карту на каждый раз, когда пользователь его просмотр, вопрос - не будет ли создавать слишком много накладных расходов вычисление для сервера?

Я подумал о том, чтобы обновить его так же, как и каждые х голосов, или сохранить модель, которая будет управлять ею.

Какова наилучшая практика в подобной ситуации?

ответ

8

Amit. Что касается фолиевых и строительных карт для пользователей, да, это может сделать тяжелую работу для сервера, когда многие пользователи хотят вычислить. Есть решения для этого:

  1. Кэширование с Redis или Memcached (Джанго есть батарейки для него). На этом этапе вы можете установить срок службы кэша ~ несколько секунд до нескольких часов, если координаты совпадают. Django обеспечивает кэширование представлений, кэширование шаблонов или другие.
  2. Сохраните результат сопоставления с db, поэтому, если пользователь вычисляет те же самые cudrinates, как вчера - Django будет принимать результат из db и быстрее показывать шаблон.
  3. Если ничего не соответствует вашим требованиям - просто сделайте django быстрее, выключите неиспользуемые посредники, используйте gunicorn \ uwsgi для запуска и развертывания. Найдите на веб-сервере больше ОЗУ и ядер процессора (при развертывании).
  4. Вы можете попробовать профилировать свой проект, чтобы вы могли найти, где находится наиболее вычислительная часть вашего проекта. Когда вы нашли - сделайте это быстрее.
0

Кэширование - лучший способ пойти, но поскольку вы не опытный разработчик, я дам вам альтернативное решение.

Кажется, что вы пересчитываете карту каждый раз, когда пользователь посещает этот раздел вашего сайта. Одним из решений является прямое подключение к html-файлу и обновление файла с помощью задачи CRON или таймера Python каждые 30 минут (или того, что вам нужно). Таким образом, вы будете вычислять только каждые полчаса для всех ваших пользователей.

 Смежные вопросы

  • Нет связанных вопросов^_^