मैं फीनिक्स एप्लिकेशन के बगल में बार-बार संचालन के समान अनुक्रम को चलाने के लिए चाहता हूं (यदि पूरे कार्यकर्ता में कुछ ब्रेक लगाना है तो पूरे वेब-ऐप को क्रैश किए बिना) और वास्तव में गीलेर को नहीं जानते हैं, मुझे जेनसेवर का उपयोग करना चाहिए , इलीक्सिर के कार्य, एक एजेंट या कुछ पूरी तरह से अलग मैंने अभी तक सोचा नहीं है।कार्यों के "अंतहीन" पुनरावृत्ति के लिए मुझे किस ओटीपी व्यवहार का उपयोग करना चाहिए?
जब मैं अपना फीनिक्स ऐप शुरू करता हूं तो एक कार्यकर्ता भी शुरू होना चाहिए, जो समय-समय पर एक सीरियल कनेक्शन के कुछ मूल्य खींचता है, उन्हें फीनिक्स चैनल के माध्यम से प्रसारित करता है, उन्हें @save_interval
तक पहुंचता है और फिर औसत, गणना करता है कि मध्य एक अलग चैनल के माध्यम से और इसे एक InfluxDB लिखता है। अभी मैं कुछ (काम करने की तरह) इस तरह है:
def do_your_thing(serial_pid) do
Stream.interval(@interval_live)
|> get_new_values_from_serial(serial_pid)
|> broadcast!("live-channel:#{@name}")
|> Enum.take(div(@interval_save, @interval_live))
|> calculate_medians()
|> broadcast!("update-channel:#{@name}")
|> write_to_database()
do_your_thing(serial_pid) # repeat
end
मैं केवल सब OTP सामान यह पता लगाने की शुरू कर और आशा है कि आप की कोई मदद कर सकता है मुझे यहाँ सही दिशा में ठोकर।
क्यों नहीं एक टास्क कि अनंत लूप (संभवतः स्ट्रीम द्वारा संचालित में समय-समय पर अपने सामान नहीं करता है। अंतराल या Stream.repeatedly)? यदि यह केवल एक आवधिक पुल है जो आगे खींचने वाले डेटा को सिस्टम के आगे आगे बढ़ाता है, तो उसे वास्तव में जेनसेवर होने की आवश्यकता नहीं है। कार्य अभी भी ओटीपी अनुपालन है, और मेरे लिए यह नौकरी के लिए अधिक सरल लगता है। – sasajuric
कारण यह है कि कार्य सिस्टम संदेश प्राप्त नहीं कर सकता है। हम स्ट्रीम और दोस्तों को उन लोगों के बारे में जानते हैं, लेकिन यह 1.0 में नहीं है और संभवतः केवल 1.3 में ही होगा। –
आप यह भी चाहते हैं कि आपके सुपरवाइजर कार्यकर्ता को आवधिक कार्य करने में सक्षम होने के बजाय, अनंत स्ट्रीम को वर्तमान प्रक्रिया को क्रैश करने की बजाय वर्तमान प्रक्रिया को पुन: प्रारंभ करने में सक्षम हो। – Letseatlunch