समानांतर थ्रेडेड फैब्रिक कमांड के लिए जेनकिंस रियलटाइम कंसोल आउटपुट [बंद]


22

हमारे पास एक पायथन फैब्रिक कमांड है जो कई मेजबानों के समानांतर चलता है, कुछ इस तरह है:

$ fab --hosts=prod1.server,prod2.server,prod3.server --parallel copy_cache

यह समानांतर में सूचीबद्ध उत्पादन सर्वर पर कैश की नकल करेगा। विभिन्न लॉगिंग है जो यह इंगित करने के लिए पूरी प्रक्रिया में होती है कि हम कितने दूर हैं क्योंकि यह XXgig कैश निर्देशिकाओं के लिए घंटे ले सकता है। चूंकि नकल समवर्ती रूप से हो रही है, कमांड लाइन पर चलने वाला आउटपुट वास्तविक समय में वापस आ जाता है, जैसे:

[prod1.server] Executing task 'nginx_cache_copy'
[prod2.server] Executing task 'nginx_cache_copy'
[prod3.server] Executing task 'nginx_cache_copy'
2014-09-16 10:02:29.688243
[prod1.server] INFO: rsyncing cache dir
[prod1.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:29.716345
[prod2.server] INFO: rsyncing cache dir
[prod2.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:29.853275
[prod3.server] INFO: rsyncing cache dir
[prod3.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:29.984154
[prod1.server] INFO: Reloading nginx config
[prod1.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.025155
[prod2.server] INFO: Reloading nginx config
[prod2.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.100169
[prod1.server] SUCCESS: CACHE COPY COMPLETE

2014-09-16 10:02:30.181938
[prod2.server] SUCCESS: CACHE COPY COMPLETE

2014-09-16 10:02:30.331402
[prod3.server] INFO: Reloading nginx config
[prod3.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.559271
[prod3.server] SUCCESS: CACHE COPY COMPLETE

Done.

हालांकि, जब कार्य जेनकिन्स के माध्यम से चलाया जाता है, तो कंसोल आउटपुट तब तक प्रदर्शित नहीं होता है जब तक कि सभी कार्य नहीं किए जाते हैं, क्योंकि जेनकिन्स समूहों के उत्पादन के बाद थ्रेड में शामिल हो जाते हैं जब सभी थ्रेड पूर्ण होते हैं। इसलिए, सभी कमांड पूरी होने के बाद आउटपुट इस तरह दिखता है:

[prod1.server] Executing task 'nginx_cache_copy'
2014-09-16 10:02:29.688243
[prod1.server] INFO: rsyncing cache dir
[prod1.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:29.984154
[prod1.server] INFO: Reloading nginx config
[prod1.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.100169
[prod1.server] SUCCESS: CACHE COPY COMPLETE

[prod2.server] Executing task 'nginx_cache_copy'
2014-09-16 10:02:29.716345
[prod2.server] INFO: rsyncing cache dir
[prod2.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:30.025155
[prod2.server] INFO: Reloading nginx config
[prod2.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.181938
[prod2.server] SUCCESS: CACHE COPY COMPLETE

[prod3.server] Executing task 'nginx_cache_copy'
2014-09-16 10:02:29.853275
[prod3.server] INFO: rsyncing cache dir
[prod3.server] run: rsync -a -q cache.server:"repo/cache/some.site.com" \
                                             "repo/cache/."
2014-09-16 10:02:30.331402
[prod3.server] INFO: Reloading nginx config
[prod3.server] run: sbin/nginx -s reload -c "repo/nginx.conf"
2014-09-16 10:02:30.559271
[prod3.server] SUCCESS: CACHE COPY COMPLETE

Done.

हालांकि यह अधिक पठनीय है, यह आदर्श नहीं है क्योंकि हम कंसोल आउटपुट को वास्तविक समय में पढ़कर प्रक्रिया की स्थिति पर नज़र रखना चाहेंगे। ध्यान दें कि जब यह फैब्रिक कमांड विकल्प के बिना चलाया जाता है --parallelतो कंसोल आउटपुट रियलटाइम में होता है , हालांकि जाहिर है कि यह काम करने योग्य नहीं है क्योंकि धारावाहिक प्रक्रिया को चलाने में अधिक समय लगता है।

मैं जेनकिन्स में एक सेटिंग नहीं ढूंढ पाया हूं जो इस थ्रेड ग्रुपिंग को अक्षम कर देगा। क्या किसी के पास कोई विचार है?


4
इसके लिए कभी भी एक पूर्ण समाधान नहीं मिला, लेकिन दौड़ना PYTHONUNBUFFERED=1 && fab ...प्रत्येक सर्वर को दिखाने में थोड़ी मदद करता है क्योंकि यह सभी को पूरा करने के लिए इंतजार करने के बजाय पूरा करता है। हालांकि अभी भी एक पूरी तरह से realtime समाधान खोजने के लिए करना चाहते हैं।
mVChr

3
मैं इस प्रश्न को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि यह सर्वर फॉल्ट के लिए अधिक उपयुक्त लगता है
तमारा विज्समैन

1
क्या आपने "stdbuf -oL" के साथ यूनिक्स कमांड से पहले की कोशिश की है?
स्ट्रोबेलिटी

श्री VarCharझाड़ू चारकोल ब्लैक - आप Superuser.com से कितने संतुष्ट हैं जो इस प्रश्न का उत्तर देने में मदद कर रहे हैं? क्या आपको अभी भी अतिरिक्त ध्यान देने की आवश्यकता है? शायद आगे और भी विकल्प हैं जो हम आपके लिए खोज सकते हैं। आप उदाहरण के लिए ध्यान आकर्षित करने के लिए शीर्षक को और अधिक आकर्षक बनाने पर विचार कर सकते हैं क्योंकि एक त्वरित विचार रणनीति जिसे आप लागू कर सकते हैं; कोशिश करने में हर्ज क्या है।
पिम्प्स जूस आईटी

4
मैं इस प्रश्न को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि इसने यहां संतोषजनक उत्तर नहीं दिया है और सर्वरफॉल्ट पर अधिक / बेहतर ध्यान प्राप्त कर सकता है।
संगीत
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.