আমাদের কাছে পাইথন ফ্যাব্রিক কমান্ড রয়েছে যা বেশ কয়েকটি হোস্টের সমান্তরালভাবে চলে, এরকম কিছু:
$ fab --hosts=prod1.server,prod2.server,prod3.server --parallel copy_cache
এটি সমান্তরালে তালিকাভুক্ত প্রোডাকশন সার্ভারগুলিতে ক্যাশে অনুলিপি করবে। এক্সজিগিগ ক্যাশে ডিরেক্টরিগুলির জন্য কয়েক ঘন্টা সময় নিতে পারে বলে আমরা কতটা দূরে রয়েছি তা নির্দেশ করার জন্য প্রক্রিয়া জুড়ে বিভিন্ন লগিং রয়েছে। যেহেতু অনুলিপিটি একই সাথে ঘটছে, কমান্ড লাইনে চালিত হওয়ার পরে আউটপুটটি রিয়েল-টাইমে আবার ইন্টারলেসড ফিরে আসে:
[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
চারকোল ব্ল্যাক ব্রয়ল - সুপারসুর ডটকম এই প্রশ্নের উত্তর সরবরাহ করতে আপনি কতটা সন্তুষ্ট? আপনি এখনও অতিরিক্ত মনোযোগ প্রয়োজন? সম্ভবত আমরা আরও আপনার জন্য অন্বেষণ করতে পারেন আরও বিকল্প আছে। আপনি শিরোনামটিকে আরও আকর্ষণীয় করে কিছু আকর্ষণ করার জন্য বিবেচনা করতে পারেন যেমন উদাহরণস্বরূপ একটি দ্রুত চিন্তা কৌশল হিসাবে আপনি প্রয়োগ করতে পারেন; চেষ্টা করে ক্ষতি কি।
PYTHONUNBUFFERED=1 && fab ...
প্রতিটি সার্ভারটি সম্পূর্ণ হওয়ার জন্য অপেক্ষা না করে সম্পূর্ণ হওয়ার সাথে সাথে এটি চালিয়ে যাওয়া কিছুটা সহায়তা করে। তবুও সম্পূর্ণ রিয়েলটাইম সমাধান খুঁজতে চাই।