2012-04-03 5 views
2

Ich benutze wundergrounds json api, um die Wetterbedingungen auf meiner Seite abzufragen. Die API gibt mir ein nettes Json-Objekt mit allen notwendigen Daten, aber ich bin auf eine Anzahl von Anrufen pro Tag beschränkt. Was wäre der bevorzugte Weg, um diese Daten zu speichern?Django JSON Strategie?

Ich dachte, den JSON in eine Datei zu dumpen und nach seinem Zeitstempel zu suchen: Wenn es älter als 60 Minuten ist, dann hole den neuen und überschreibe, wenn nicht, die Datei von der Platte. Ich würde keine Datenbanktabelle erstellen, nur um Wetterdaten zu speichern, die ich nicht unbedingt brauche. Gibt es eine clevere Django-Methode, um diesen Prozess zwischenzuspeichern, oder sollte ich das manuell machen?

Antwort

4

Ja, Django hat einen eingebauten Caching-Mechanismus. Wenn Sie keinen Caching-Server installieren möchten, könnten Sie den Dateisystemcache verwenden, der ungefähr dem entspricht, von dem Sie sprechen, aber Sie müssen ihn nicht selbst rollen.

Here's the documentation.

Sie so etwas in Ihrer settings.py setzen würde

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

In Ihrem App-Code, Sie dann eine gewisse Logik haben könnte, den Cache zu überprüfen, und wenn es nicht gefunden wird , dann lade es vom Server und cache es.

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