Chúng tôi có một lệnh vải Python chạy song song trên một số máy chủ, đại loại như thế này:
$ fab --hosts=prod1.server,prod2.server,prod3.server --parallel copy_cache
Điều này sẽ sao chép bộ đệm vào các máy chủ sản xuất được liệt kê song song. Có nhiều bản ghi khác nhau xảy ra trong suốt quá trình để chỉ ra chúng ta sẽ đi bao xa vì có thể mất hàng giờ cho các thư mục bộ đệm XXgig. Vì việc sao chép đang diễn ra đồng thời, đầu ra khi chạy trên dòng lệnh sẽ quay trở lại xen kẽ trong thời gian thực, như vậy:
[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.
Tuy nhiên, khi tác vụ được chạy qua Jenkins, đầu ra của bàn điều khiển sẽ không hiển thị cho đến khi tất cả các tác vụ được thực hiện do Jenkins nhóm đầu ra SAU các luồng được nối khi tất cả các luồng hoàn thành. Vì vậy, một khi tất cả các lệnh hoàn thành, đầu ra trông như thế này:
[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.
Mặc dù điều này dễ đọc hơn, nhưng nó không lý tưởng vì chúng tôi muốn theo dõi trạng thái của quá trình bằng cách đọc đầu ra của bàn điều khiển trong thời gian thực. Lưu ý rằng khi lệnh vải này được điều hành mà không cần các --parallel
tùy chọn giao diện điều khiển đầu ra không xảy ra trong thời gian thực , tuy nhiên rõ ràng đây không phải là hoàn toàn khả thi vì quá trình nối tiếp mất nhiều thời gian để chạy.
Tôi đã không thể tìm thấy một thiết lập trong Jenkins sẽ vô hiệu hóa nhóm này. Có ai có ý tưởng nào?
VarChar
broiled Char than Black - Bạn hài lòng như thế nào với Superuser.com giúp cung cấp câu trả lời cho câu hỏi này? Bạn đang cần thêm sự chú ý vẫn còn? Có lẽ có nhiều lựa chọn hơn chúng tôi có thể khám phá cho bạn. Bạn có thể xem xét thay đổi tiêu đề thành một cái gì đó hấp dẫn hơn để thu hút sự chú ý chẳng hạn như một chiến thuật suy nghĩ nhanh mà bạn có thể áp dụng; những gì có hại trong việc cố gắng.
PYTHONUNBUFFERED=1 && fab ...
giúp một chút bằng cách hiển thị mỗi máy chủ khi nó hoàn thành thay vì chờ tất cả hoàn thành. Vẫn muốn tìm một giải pháp hoàn toàn thời gian thực mặc dù.