2012-10-10 15 views
7

पुनरारंभ करें मेरे पास एक_for_one पुनरारंभ रणनीति के साथ पर्यवेक्षक है। क्या बाल प्रक्रिया पुनरारंभ करने के बीच कुछ समय अंतराल सेट करना संभव है?एरलांग पर्यवेक्षक अंतराल

एफ.ई. रिमोट डीबी कुचल दिया और मैं कनेक्शन प्रयास बहाल करने के बीच 10 सेकंड इंतजार करना चाहता हूँ।

उत्तर

4

असल में, आप क्या आलसी आरंभीकरण कहा जाता है पर्यवेक्षक तुरंत अपने बच्चों को पुनः आरंभ और लागू करने के लिए दे सकता है:

  1. पर्यवेक्षक (फिर से) शुरू होता है (तुरंत) बच्चे (जैसे कि, एक gen_server)
  2. gen_server अपने init समारोह
  3. में एक 0 टाइमआउट रिटर्न handle_info आप एक सक्रिय इंतजार कर में (अपने 10 सेकंड) सुनिश्चित करने के लिए डीबी ठीक से प्रारंभ है

इस तरह, आप सुनिश्चित करते हैं कि डीबी ठीक से शुरू होने के बाद gen_server के सभी अनुरोध संसाधित हो जाएं।

+0

धन्यवाद, लेकिन मुझे gen_server init के साथ समस्या नहीं है, मैं पुनरारंभ प्रयास के बीच एक समय अंतराल (नींद) चाहता हूं। – kolchanov

+2

मुझे लगता है कि @Robert Aloi सुझाव क्या काम करेगा। Gen_server का init पुन: कनेक्ट करने का प्रयास नहीं करेगा, इसके बजाय यह 0 टाइमआउट देता है जो कि बच्चे द्वारा शुरू किए गए पर्यवेक्षक को संतुष्ट करेगा। फिर, हैंडल_इनो फ़ंक्शन में आप "असली" प्रारंभिक कार्य करते हैं ... 10 सेकंड – Jr0

+0

के लिए सोने के बाद या डीबी जीवित रहने के बाद भी बेहतर है। निश्चित समय की प्रतीक्षा करना सभी बुराइयों की जड़ है। –