2013-11-26 3 views
6

मेरे पास एक dev सर्वर है जो मैं अक्सर गिट पर कोड परिवर्तन को धक्का देता हूं। प्रत्येक धक्का के बाद, मुझे सर्वर में मैन्युअल रूप से लॉग इन करने और पर्यवेक्षक प्रक्रियाओं को पुनरारंभ करने की आवश्यकता होती है।क्या पर्यवेक्षक प्रक्रियाओं को स्वचालित रूप से पुनः लोड करने का कोई तरीका है?

क्या पर्यवेक्षक परिवर्तन के लिए फाइल सिस्टम निर्देशिका की निगरानी करने और परिवर्तनों पर प्रक्रिया (एस) को पुनः लोड करने का कोई तरीका है?

उत्तर

5

आपको Event Listener का उपयोग करने में सक्षम होना चाहिए जो फाइल सिस्टम (शायद watchdog के साथ) पर नज़र रखता है और XML-RPC API का उपयोग करके पुनरारंभ करता है। प्रेरणा के लिए superlance पैकेज से memmon श्रोता देखें। इसे जटिल होने की आवश्यकता नहीं होगी। और चूंकि वॉचडॉग आपके पुनरारंभ दिनचर्या को कॉल करेगा, इसलिए आपको childutils.listener.wait का उपयोग करके ईवेंट पढ़ने की आवश्यकता नहीं है।

वैकल्पिक रूप से, गिट हुक चाल चल सकता है अगर पर्यवेक्षक API को एक्सेस करने के लिए अनुमतियां सही हैं (सॉकेट अनुमतियां, HTTP पासवर्ड)। एक सरल लेकिन कम सुरक्षित दृष्टिकोण।

एक आसान और कम-सुरक्षित दृष्टिकोण आपको supervisorctl restart जारी करने की अनुमति देगा। चल रहे उपयोगकर्ता को आपके पुश उपयोगकर्ता (या गिट, या www से मेल खाना है, इस पर निर्भर करता है कि आपने इसे कैसे सेटअप किया है)। इसे सुरक्षा के अनुसार गलत तरीके से जाने के कई तरीके हैं। लेकिन विकास के लिए, ठीक हो सकता है।

संबंधित:

+6

तो, यह वास्तव में एक समाधान नहीं है, जैसे "समाधान कैसे बनाएं।" तो अब यह लगभग 3 साल बाद है, क्या अभी भी कोई वास्तविक समाधान नहीं है जो मुझे एक आम समस्या है? – hackel

5

मैं भी किसी भी समाधान नहीं मिला तो मैं अपने ही करने की कोशिश की। Here it is

आप इस आदेश से पैकेज स्थापित कर सकते हैं:

pip install git+https://github.com/stavinsky/supervisord-touch-reload.git 

(मैं इसे PyPI करने के लिए कुछ परीक्षण जोड़ने के बाद जोड़ देगा।)

GitHub में उदाहरण फ़ोल्डर में स्थित पर्यवेक्षक की स्थापना का एक उदाहरण। दस्तावेज़ीकरण बहुत जल्द होगा, मुझे विश्वास है। मूल रूप से सब आप उपयोग शुरू करने की आवश्यकता इस मॉड्यूल command तरह के साथ घटना श्रोता जोड़ने है:

python -m touch_reload --socket unix:///tmp/supervisor.sock --file <path/to file file> --program <program name>

जहां file एक फ़ाइल है कि पूर्ण या directory पथ के सापेक्ष के साथ नजर रखी जाएगी है, socketsupervisorctl से सॉकेट है सेक्शन और program प्रोग्राम नाम [program:<name>] सेक्शन परिभाषा है। --username और --password भी उपलब्ध है, यदि आप कस्टम पर्यवेक्षक कॉन्फ़िगरेशन हैं तो आप इसका उपयोग कर सकते हैं।

+1

इसे प्रकाशित करने के लिए धन्यवाद। अच्छी तरह से काम करने लगता है। वास्तव में अजीब बात यह है कि इस – edwardmp

+0

स्वागत जैसे कुछ करने के लिए कोई अंतर्निहित समाधान नहीं है। यह जानकर खुशी हुई कि यह किसी के लिए सहायक था।यदि आपको कोई समस्या या विचारों में सुधार करना है, तो इस स्क्रिप्ट को मुझे यहां या गीथब – Stavinsky

+0

पर बेहतर तरीके से लिखने के लिए क्या यह समाधान केवल एक समय में एक फ़ाइल की निगरानी करता है? https://github.com/gorakhargosh/watchdog आपको एक संपूर्ण निर्देशिका देखने देगा। –

1

पर्यवेक्षक का उपयोग करने वाले समाधान के दौरान, मैं आमतौर पर पर्यवेक्षित ऐप के भीतर इस समस्या को हल करता हूं। उदाहरण के लिए, बंदूक के लिए --reload ध्वज जोड़ें और जब भी आपका ऐप बदल जाए तो यह फिर से लोड हो जाएगा।

संबंधित मुद्दे

 संबंधित मुद्दे