Django json策略?

时间:2012-04-03 09:14:53

标签: django json caching

我正在使用wunderground的json api来查询我网站上的天气状况。 api给了我一个很好的json对象以及所有必要的数据,但我每天只能进行一些调用。存储此数据的首选方法是什么?

我正在考虑将json转储到一个文件中,并检查它的时间戳:如果它超过60分钟,则获取新的并覆盖,如果不是,则从磁盘读取该文件。我不会创建一个数据库表来存储我基本上不需要的天气数据。是否有一些聪明的Django缓存这个过程的方法,还是我应该手动完成?

1 个答案:

答案 0 :(得分:5)

是的,Django有一个内置的缓存机制。如果您不想安装缓存服务器,可以使用文件系统缓存,这与您正在谈论的内容几乎相同,但您不必自己滚动它。

Here's the documentation.

你可以在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