2011-08-08 10 views
9

मैं desribed हर जगह के रूप में मैंगियरमैन जॉब्स की स्थिति उनके यूनिक आईडी द्वारा कैसे प्राप्त करें?

देखा क्या यह संभव है, इन uniq आईडी द्वारा Gearman कार्यों की स्थिति प्राप्त करने के लिए खुला संचालकों द्वारा की जरूरत नहीं है,? पायथन-गियरमैन बनाम 2 में उपयोग ...

सहायता के लिए धन्यवाद!

उत्तर

6

इस समस्या को हल करने के लिए काफी कुछ खोदना पड़ा, क्योंकि यह पाइथन-गियरमैन-एपीआई में एक दोस्ताना तरीके से खुलासा नहीं हुआ है। हालांकि आप GearmanJob और GearmanJobRequest के उचित उदाहरण बनाकर इसे हल कर सकते हैं।

आप इसे इस तरह से कर सकते हैं का एक छोटा सा उदाहरण है:

import gearman 

client = gearman.GearmanClient(['localhost']) 
result = client.submit_job('reverse', 'this is a string', background=True); 

आप ट्रैक जिनमें से सर्वर काम संभालने के लिए (यदि आप एक से अधिक Gearman सर्वर से निपटने कार्य किया है) मिल गया रखना चाहते हैं, और कार्य का संचालन कनेक्शन जानकारी result.job.connection (.gearman_host और .gearman_port) के माध्यम से उपलब्ध है, जबकि हैंडल result.job.handle के माध्यम से उपलब्ध है।

एक वर्तमान में चल रहे काम आप एक GearmanClient बनाने की स्थिति की जांच करने के लिए, लेकिन केवल सर्वर आप वर्तमान स्थिति के लिए क्वेरी करना चाहते हैं की आपूर्ति:

client = gearman.GearmanClient(['localhost']) 

# configure the job to request status for - the last four is not needed for Status requests. 
j = gearman.job.GearmanJob(client.connection_list[0], result.job.handle, None, None, None, None) 

# create a job request 
jr = gearman.job.GearmanJobRequest(j) 
jr.state = 'CREATED' 

# request the state from gearmand 
res = client.get_job_status(jr) 

# the res structure should now be filled with the status information about the task 
print(str(res.status.numerator) + "/" + str(res.status.denominator)) 

उम्मीद है कि है कि मदद करता है!

+0

मैंने जिथब में पाइथन-गियरमैन के अपने कांटा में एक सुविधा विधि भी जोड़ दी है। मुझे नहीं लगता कि यह किसी भी समय आधिकारिक वितरण में होगा, लेकिन पैच यहां उपलब्ध है: https://github.com/matslindh/python-gearman/commit/983e97c5055f1ccf7059f00215cc6e026ebc1ba0 – MatsLindh

+0

धन्यवाद। ऐसा लगता है कि मुझे क्या चाहिए। लेकिन मैं स्थिति को संग्रहीत करने और नौकरियों के लिए अतिरिक्त डेटा संग्रहीत करने के लिए memcache wrapper का उपयोग करके इसे हल करता हूं। –