इस समस्या को हल करने के लिए काफी कुछ खोदना पड़ा, क्योंकि यह पाइथन-गियरमैन-एपीआई में एक दोस्ताना तरीके से खुलासा नहीं हुआ है। हालांकि आप 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))
उम्मीद है कि है कि मदद करता है!
मैंने जिथब में पाइथन-गियरमैन के अपने कांटा में एक सुविधा विधि भी जोड़ दी है। मुझे नहीं लगता कि यह किसी भी समय आधिकारिक वितरण में होगा, लेकिन पैच यहां उपलब्ध है: https://github.com/matslindh/python-gearman/commit/983e97c5055f1ccf7059f00215cc6e026ebc1ba0 – MatsLindh
धन्यवाद। ऐसा लगता है कि मुझे क्या चाहिए। लेकिन मैं स्थिति को संग्रहीत करने और नौकरियों के लिए अतिरिक्त डेटा संग्रहीत करने के लिए memcache wrapper का उपयोग करके इसे हल करता हूं। –