Джанго Джсон стратегия? - PullRequest
2 голосов
/ 03 апреля 2012

Я использую json api от wunderground для запроса погодных условий на моем сайте.API дает мне хороший объект json со всеми необходимыми данными, но я ограничен количеством вызовов в день.Каков предпочтительный способ хранения этих данных?

Я собирался выгрузить json в файл и проверить его метку времени: если он, скажем, старше 60 минут, тогда извлеките новую и перезаписайте,если это не так, прочитайте файл с диска.Я бы не стал создавать таблицу базы данных только для хранения данных о погоде, которые мне не нужны.Есть ли какой-нибудь умный способ Django для кеширования этого процесса или я должен сделать это вручную?

1 Ответ

5 голосов
/ 03 апреля 2012

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

Вот документация.

Вы бы поместили что-то подобное в ваши settings.py

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
    }
}

В коде вашего приложения вы могли бы иметь некоторую логику дляпроверьте кэш, и если он не найден, загрузите его с сервера и кэшируйте.

from django.core.cache import cache

weather_json_data = cache.get('weather_90210'):
if not weather_json_data:
    weather_json_data = get_data_from_api(zip)

    cache.set('weather_{0}'.format(zip), weather_json_data, 60)

#return the weather_json_data through HttpResponse here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...