私は毎日、API を呼び出してデータを取得する cron ジョブを実行しています。データの行ごとに、タスク キューを開始してデータを処理します (さらに API を介してデータを検索する必要があります)。これがすべて完了すると、データは次の 24 時間は変更されないので、memcache します。
データをキャッシュできるように、キューに入れていたすべてのタスクがいつ終了したかを知る方法はありますか?
現在、次のように2つのcronジョブをスケジュールするだけで、非常に面倒な方法で実行しています。
class fetchdata(webapp.RequestHandler):
def get(self):
todaykey = str(date.today())
memcache.delete(todaykey)
topsyurl = 'http://otter.topsy.com/search.json?q=site:open.spotify.com/album&window=d&perpage=20'
f = urllib.urlopen(topsyurl)
response = f.read()
f.close()
d = simplejson.loads(response)
albums = d['response']['list']
for album in albums:
taskqueue.add(url='/spotifyapi/', params={'url':album['url'], 'score':album['score']})
class flushcache(webapp.RequestHandler):
def get(self):
todaykey = str(date.today())
memcache.delete(todaykey)
次に、私の cron.yaml は次のようになります。
- description: gettopsy
url: /fetchdata/
schedule: every day 01:00
timezone: Europe/London
- description: flushcache
url: /flushcache/
schedule: every day 01:05
timezone: Europe/London
基本的に、すべてのタスクの実行に 5 分以上かかることはないと推測しているため、5 分後にキャッシュをフラッシュするだけで、データがキャッシュされたときに完全に完了することが保証されます。
これをコーディングするより良い方法はありますか?私の解決策は最善の解決策ではないように感じます....
ありがとうトム