Buna benzer bir şekilde birkaç ana bilgisayara paralel olarak çalışan bir Python kumaş komutumuz var:
$ fab --hosts=prod1.server,prod2.server,prod3.server --parallel copy_cache
Bu, önbelleği paralel olarak listelenen üretim sunucularına kopyalar. İşlem boyunca, XXgig önbellek dizinleri için saatlerce alabileceğimizden beri ne kadar uzak olduğumuzu gösteren çeşitli kayıtlar vardır. Kopyalama aynı anda gerçekleştiğinden, komut satırında çalıştırıldığında çıkan çıktı gerçek zamanlı olarak tekrar titreşimli hale gelir, şöyle:
[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.
Ancak, görev Jenkins tarafından gerçekleştirildiğinde, tüm görevler tamamlanıncaya kadar konsol çıktısı görüntülenmez, çünkü Jenkins, tüm iş parçacıkları tamamlandığında iş parçacıkları birleştirildikten SONRA çıkışı gruplandırır. Böylece, tüm komutlar tamamlandıktan sonra, çıkış şöyle görünür:
[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.
Bu daha okunaklı olsa da, ideal değil çünkü konsol çıktısını gerçek zamanlı olarak okuyarak sürecin durumunu takip etmek istiyoruz. Bu kumaş komutu çalıştırıldığında bu Not olmadan--parallel
seçeneği konsol çıkış gerçek zamanlı olarak meydana seri işlem çalıştırmak için çok daha uzun sürer, çünkü ancak belli ki bu uygulanabilir değil.
Jenkins'te bu konu grubunu etkisiz hale getirecek bir ayar bulamadım. Bir fikri olan var mı?
VarChar
Charcoal Black broiled - Superuser.com'dan bu sorunun cevabını vermesine ne kadar memnun kaldınız? Hala ek bir ilgiye mi ihtiyacınız var? Belki sizin için keşfedebileceğimiz başka seçenekler de vardır. Başlığı, dikkat çekmek için daha çekici bir şeyle değiştirmeyi düşünebilirsiniz, örneğin uygulayabileceğiniz hızlı bir düşünce taktiği; Denemenin zararı ne?
PYTHONUNBUFFERED=1 && fab ...
her bir sunucunun, tamamının tamamlanmasını beklemek yerine, tamamlandığını göstererek biraz yardımcı olur. Yine de tamamen gerçek zamanlı bir çözüm bulmak istiyorum.