Bir API'ye çağrı yapmak ve bazı verileri almak için her gün bir cron işim var. Verilerin her satırı için verileri işlemek için bir görev kuyruğuna basıyorum (veriyi diğer API'ler aracılığıyla aramakla ilgilidir). Tüm bunlar bittiğinde, sonraki 24 saat boyunca verilerim değişmez, bu yüzden onu not aldım.Görev kuyruğu appien'de boşken çalıştır işlevi
Verileri önbelleğe alabilmem için sıraya aldığım tüm görevlerin ne zaman tamamlandığını öğrenmenin bir yolu var mı?
Şu anda sadece bu gibi iki cron işleri planlayarak gerçekten dağınık biçimde bunu:
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)
Sonra cron.yaml şöyle görünür: Temelde
- description: gettopsy
url: /fetchdata/
schedule: every day 01:00
timezone: Europe/London
- description: flushcache
url: /flushcache/
schedule: every day 01:05
timezone: Europe/London
- Ben Tüm görevlerimin çalıştırılmasının 5 dakikadan fazla sürmeyeceğini tahmin ediyorum, bu yüzden önbellek 5 dakika sonra akıtır ve bu veriler önbelleğe alındığında tamamlanır.
Bunu kodlamanın daha iyi bir yolu var mı? Benim çözümün en iyi çözüm değil gibi geliyor ....
Teşekkür Tom
teşekkürler nick - bariz bir şey kaçırmadım bilmek güzel. Ne önerdiğinizi deneyeceğim – tomcritchlow