हमारे पास एक पायथन फैब्रिक कमांड है जो कई मेजबानों के समानांतर चलता है, कुछ इस तरह है:
$ 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
तो कंसोल आउटपुट रियलटाइम में होता है , हालांकि जाहिर है कि यह काम करने योग्य नहीं है क्योंकि धारावाहिक प्रक्रिया को चलाने में अधिक समय लगता है।
मैं जेनकिन्स में एक सेटिंग नहीं ढूंढ पाया हूं जो इस थ्रेड ग्रुपिंग को अक्षम कर देगा। क्या किसी के पास कोई विचार है?
VarChar
झाड़ू चारकोल ब्लैक - आप Superuser.com से कितने संतुष्ट हैं जो इस प्रश्न का उत्तर देने में मदद कर रहे हैं? क्या आपको अभी भी अतिरिक्त ध्यान देने की आवश्यकता है? शायद आगे और भी विकल्प हैं जो हम आपके लिए खोज सकते हैं। आप उदाहरण के लिए ध्यान आकर्षित करने के लिए शीर्षक को और अधिक आकर्षक बनाने पर विचार कर सकते हैं क्योंकि एक त्वरित विचार रणनीति जिसे आप लागू कर सकते हैं; कोशिश करने में हर्ज क्या है।
PYTHONUNBUFFERED=1 && fab ...
प्रत्येक सर्वर को दिखाने में थोड़ी मदद करता है क्योंकि यह सभी को पूरा करने के लिए इंतजार करने के बजाय पूरा करता है। हालांकि अभी भी एक पूरी तरह से realtime समाधान खोजने के लिए करना चाहते हैं।