2012-04-03 17 views
2

私はwundergroundのjson apiを使用して自分のサイトの気象条件を照会しています。 apiは私に必要なすべてのデータを持つ素晴らしいjsonオブジェクトを与えますが、私は1日にいくつかの呼び出しに制限されています。このデータを保存するにはどうすればよいでしょうか?Django json戦略ですか?

jsonをファイルにダンプし、タイムスタンプがないかどうかを確認しました.60分を超えると、新しいファイルをフェッチし、上書きします。そうでない場合は、ディスクからファイルを読み込みます。私が本質的に必要としない気象データを格納するためにデータベーステーブルを作成することはありません。このプロセスをキャッシュするDjangoの巧妙な方法がありますか、それとも手動で行うべきですか?

答えて

4

はい、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