เรามีคำสั่ง Python fabric ที่ทำงานพร้อมกันในหลาย ๆ โฮสต์เช่นนี้:
$ 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.
อย่างไรก็ตามเมื่องานรันผ่าน Jenkins เอาต์พุตคอนโซลจะไม่แสดงจนกว่างานทั้งหมดจะเสร็จสิ้นเนื่องจาก Jenkins จัดกลุ่มเอาต์พุตหลังจากที่เธรดเข้าร่วมเมื่อเธรดทั้งหมดเสร็จสมบูรณ์ ดังนั้นเมื่อคำสั่งทั้งหมดเสร็จสิ้นแล้วผลลัพธ์จะเป็นดังนี้:
[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
broiled Charcoal Black - คุณพอใจเพียงใดกับ Superuser.com ที่ให้คำตอบสำหรับคำถามนี้ คุณต้องการความสนใจเพิ่มเติมหรือยัง อาจมีตัวเลือกเพิ่มเติมที่เราสามารถสำรวจให้คุณได้ คุณอาจพิจารณาเปลี่ยนชื่อเรื่องเป็นสิ่งที่น่าดึงดูดยิ่งกว่าเพื่อดึงดูดความสนใจตัวอย่างเช่นกลยุทธ์การคิดแบบรวดเร็วที่คุณสามารถนำไปใช้ได้ สิ่งที่เป็นอันตรายในการพยายาม
PYTHONUNBUFFERED=1 && fab ...
จะช่วยได้เล็กน้อยโดยแสดงเซิร์ฟเวอร์แต่ละเครื่องให้เสร็จสมบูรณ์แทนที่จะรอให้ทุกคนดำเนินการให้เสร็จสิ้น ยังคงต้องการที่จะหาทางออกเรียลไทม์อย่างสมบูรณ์แม้ว่า