次のような複数のホスト間で並行して実行されるPythonファブリックコマンドがあります。
$ 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
、コンソール出力がリアルタイムで発生することに注意してください。ただし、シリアルプロセスの実行には非常に長い時間がかかるため、明らかにこれは実行できません。
このスレッドのグループ化を無効にする設定をJenkinsで見つけることができませんでした。誰にもアイデアはありますか?
私はそれがサーバー障害のために、よりフィット感を思わので、オフトピックとして、この質問を閉じるために投票しています
—
タマラWijsman
UNIXコマンドの前に「stdbuf -oL」を付けてみましたか?
—
ストロボ
Mr.
—
ポン引きジュースIT
VarChar
broiled Charcoal Black-この質問への回答を提供してくれるSuperuser.comにどの程度満足していますか?さらに注意が必要ですか?おそらく、私たちがあなたのために探求できるさらなるオプションがあるでしょう。タイトルをもっと魅力的なものに変更することを検討してください。たとえば、考えられる簡単な戦術として、注目を集めることができます。試みることの害は何ですか。
ここでは満足のいく答えが得られておらず、ServerFaultでより多くの/より良い注意を引く可能性があるため、この質問をトピック外として閉じることを投票します。
—
music2myear
PYTHONUNBUFFERED=1 && fab ...
すると、すべてのサーバーが完了するのを待つのではなく、各サーバーが完了したことを示すことで少し役立ちます。それでも、完全にリアルタイムのソリューションを見つけたいと思っています。