मैंने सरल वर्कफ़्लो के प्रबंधन के लिए एडब्लूएस रूबी एसडीके का उपयोग शुरू कर दिया है। एक व्यवहार जो मैंने अभी देखा है वह यह है कि कम से कम एक प्रासंगिक कार्यकर्ता और एक नया निर्णयकर्ता एक नया वर्कफ़्लो निष्पादन सबमिट करने से पहले चलाना चाहिए।अमेज़ॅन एसडब्ल्यूएफ: कम से कम एक कार्यकर्ता चलाना है, क्यों?
यदि मैं अपने कार्यकर्ता और निर्णायक को शुरू करने से पहले एक नया वर्कफ़्लो निष्पादन सबमिट करता हूं, तो कार्यों को कभी भी उठाया नहीं जाता है, भले ही मैं समय-समय सीमा के भीतर भी ठीक हूं। ऐसा क्यों है? एचटीटीपी लंबे मतदान के तरीके के विवरण के आधार पर, मैं उम्मीद करता हूं कि मतदान के लिए कॉल() तक पहुंचने पर ऐप को प्रासंगिक कार्यों को प्राप्त करने की उम्मीद होगी।
नौकरी विफल होने के बाद मुझे अन्य डेडलॉकिंग स्थितियों का सामना करना पड़ता है (उदा। कार्यकर्ता या निर्णायक बग के कारण, या समाप्त होने के कारण)। कभी-कभी, फिर से चलने या यहां तक कि एक पूरी तरह से नया वर्कफ़्लो निष्पादन शुरू करने के परिणामस्वरूप एक डेडलॉक वर्कफ़्लो निष्पादन होगा। प्रारंभिक निर्णय कार्य AWS कंसोल में वर्कफ़्लो निष्पादन इतिहास में दिखाए जाते हैं, लेकिन निर्णायक उन्हें कभी प्राप्त नहीं करता है। बेशक, मुझे इस मुद्दे को एक परीक्षण मामले में पुष्टि/कम करने में समस्या हो रही है, लेकिन मुझे संदेह है कि यह उपर्युक्त मुद्दे से संबंधित है। यह लगभग 10 से 20% समय होता है; बाकी समय, सबकुछ काम करता है।
उल्लेख करने के लिए कुछ अन्य चीजें: मैं अनुक्रम में चलने वाले दो अलग-अलग गतिविधि कार्यों के लिए एक एकल कार्य सूची का उपयोग कर रहा हूं। कार्यकर्ता और निर्णायक दोनों एक ही कार्य सूची मतदान कर रहे हैं।
यहाँ मेरी कार्यकर्ता है:
require 'yaml'
require 'aws'
config_file_path = File.join(File.dirname(File.expand_path(__FILE__)), 'config.yaml')
config = YAML::load_file(config_file_path)
swf = AWS::SimpleWorkflow.new(config)
domain = swf.domains['test-domain']
puts("waiting for an activity")
domain.activity_tasks.poll('hello-tasklist') do |activity_task|
puts activity_task.activity_type.name
activity_task.complete! :result => name
puts("waiting for an activity")
end
संपादित
एडब्ल्यूएस मंचों पर किसी अन्य उपयोगकर्ता ने टिप्पणी की:
मुझे लगता है कि कारण में SWF तुरंत एक लंबे चुनाव पहचान नहीं है कनेक्शन शट डाउन जब आप किसी कार्यकर्ता को मारते हैं तो कुछ समय के लिए इसका कनेक्शन सेवा द्वारा खुला माना जा सकता है। तो यह अभी भी एक कार्य भेज सकता है। आपके लिए ऐसा लगता है कि नए कर्मचारी इसे कभी नहीं प्राप्त कर रहे हैं। इसे सत्यापित करने का तरीका वर्कफ़्लो इतिहास की जांच करना है। आप गतिविधि कार्य को ईवेंट फ़ील्ड के साथ शुरू करेंगे जिसमें मृत कार्यकर्ता का मेजबान और पिड शामिल है। आखिरकार ऐसा कार्य समय-समय पर जा रहा है और इसे निर्णायक द्वारा पुनः प्रयास किया जा सकता है।
ध्यान दें कि ऐसी स्थिति यूनिट परीक्षणों के दौरान आम है जो कनेक्शन को अक्सर समाप्त करती है और वास्तव में किसी भी उत्पादन अनुप्रयोगों के लिए कोई समस्या नहीं है। सामान्य वर्कअराउंड प्रत्येक यूनिट परीक्षण के लिए अलग-अलग कार्य सूची का उपयोग करना है।
यह एक बहुत ही उचित स्पष्टीकरण प्रतीत होता है। मैं इसकी पुष्टि करने की कोशिश करने जा रहा हूं।
पूरी तरह से स्पष्टीकरण के लिए धन्यवाद। मैंने सोचा कि मैं पूरे समय कुछ गलत कर रहा था, लेकिन ऐसा लगता है कि सबकुछ अपेक्षाकृत कम या ज्यादा काम कर रहा है। मैं खुद को एक परीक्षण लिखने के लिए नहीं मिला था। – Tom
खुशी मेरा है, मेरे पास एक विस्फोट था और कुछ सीखना समाप्त हो गया। – oozie
इससे मदद मिलती है। धन्यवाद – Tzu