जब आप कार्य आरंभ किया है, तुम्हें पता है कि कितने नहीं होगा। 'अपेक्षित' गिनती, या कार्यों की सूची के साथ डेटास्टोर में एक इकाई डालें। फिर किसी कार्य को चलाने के संकेत देने के लिए या तो काउंटर या मार्कर का उपयोग करें। तब
class TaskBatch(db.Model):
expected_count = db.IntegerProperty()
class TaskMarker(db.Model):
pass
, की तरह कुछ करने के लिए अपने फोन दिनचर्या को समायोजित:
नए प्रकार: मोटे तौर पर, प्रक्रिया की तरह कुछ लग सकता है
count = 5
taskbatch = TaskBatch(expected_count=count).put()
for i in range(5):
taskqueue.add(url='/example',
params={'num': i, 'batch': str(taskbatch)})
और अपने कार्यों के अंत में, :
def post(self):
num = self.request.get('num')
# do your stuff....
batch = self.request.get('batch')
TaskMarker(key_name=num, parent=db.Key(batch))
taskqueue.add(url='/example/isdone',
params={'num': i, 'batch': str(taskbatch)})
और isdone
काम की तरह कुछ दे सकता है:
def post(self):
num = self.request.get('num')
batch_key = db.Key(self.request.get('batch'))
batch = TaskBatch.get(batch_key)
marker_keys = [db.Key.from_path('TaskMarker', i, parent=batch)
for i in range(batch.expected_count)]
markers = db.get(marker_keys)
if all(markers):
# do your done action.
सटीक प्रक्रिया आपके उपयोगकेस के विनिर्देशों के आधार पर थोड़ा भिन्न होगी, जैसे कि आपके डालने में कितने कार्य हैं।
स्रोत
2010-11-19 18:11:30