"Too long with no output (exceeded 10m0s): context deadline exceeded"のエラーでビルド失敗した場合

CircleCI では、一定時間出力がない状態が続くとコマンドが強制終了されます。 デフォルトではこれは 10 分に設定されています。 これはビルドがフリーズし、意図せず大量のクレジットを使用されるのを防ぐための制限になります。

いくつかのテストランナーやツールの中には、出力のバッファリング機能を利用しているものがあります。 これは、プログラムがテキストを 1 行ごとに出力するのではなく、1回でまとめて出力するものです。 そのため、プロセスが終了するまですべての出力がバッファリングされる場合があります。 テストやタスクが完了するまでに 10 分以上必要で出力をバッファリングしている場合は、その間に出力がなかったために、CircleCI がステップを強制終了することがあります。

Pythonでは、環境変数 PYTHONUNBUFFERED でこの制限を無効にできます。 以下のように export コマンドで設定できます。

steps:
- run:
name: Run Tests
command: |
export PYTHONUNBUFFERED=1
python -m unittest

タスクにアウトプットを出力をする設定ない場合、デフォルトの制限時間を以下のように増やすことができます。

steps:
- run:
name: Run Tests
no_output_timeout: 30m
     command: python -m unittest

テストやタスクがフリーズしている場合にステップがタイムアウトすることがあります。 いくつかの例としては、プロセスがユーザーの入力を待機している場合や、ループで利用可能でないネットワーク上のリソースをポーリングし続ける場合があります。

この記事は役に立ちましたか?
23人中10人がこの記事が役に立ったと言っています

コメント

0件のコメント

記事コメントは受け付けていません。