पर कार्य कतार खाली होने पर कार्य चलाएं मेरे पास एक एपीआई को कॉल करने और कुछ डेटा लाने के लिए हर रोज क्रॉन नौकरी होती है। डेटा की प्रत्येक पंक्ति के लिए मैं डेटा को संसाधित करने के लिए एक कार्य कतार निकाल देता हूं (जिसमें आगे के एपीआई के माध्यम से डेटा देखना शामिल है)। एक बार यह सब खत्म हो जाने पर मेरा डेटा अगले 24 घंटों तक नहीं बदलता है, इसलिए मैं इसे याद करता हूं।एपेंगिन
क्या यह जानने का कोई तरीका है कि जब मैंने कतारबद्ध किए गए सभी कार्यों को समाप्त कर दिया है ताकि मैं डेटा कैश कर सकूं?
वर्तमान में मैं सिर्फ इस तरह दो क्रॉन नौकरियों शेड्यूल करके एक वास्तव में गन्दा फैशन में कार्य करें:
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 मिनट बाद कैश फ्लश करता हूं और यह सुनिश्चित करता है कि जब डेटा कैश किया जाता है तो यह पूरा हो जाता है।
क्या यह कोडिंग का एक बेहतर तरीका है? लगता है जैसे मेरी समाधान सबसे अच्छा एक नहीं है ....
धन्यवाद टॉम
धन्यवाद निक - मुझे पता है कि मुझे कुछ स्पष्ट याद नहीं आया। मैं कोशिश करता हूं कि आप – tomcritchlow