ライブイベント
ポーリングせずに、ジョブや設定の変更を受け取ります
サーバーは、変更が起きるとその都度クライアントに通知します。スクリプトも、数秒ごとにジョブを読み取る代わりに、これを受け取ることができます。
ストリーム
GET /api/v2/events は、開いたままになる Server-Sent Events のストリームです。サインインしているユーザーなら誰でも、通常の Bearer トークンで開けます。
curl -N https://af.example.com/api/v2/events -H "Authorization: Bearer <token>"
何かが変わると、変わったものの名前を付けて changed イベントを送ります。
event: changed
data: {"name":"jobs"}
イベント名
イベントが運ぶのは名前だけでデータは含まないため、ユーザーが見られないものが漏れることはありません。送られる名前は次のとおりです。
| 名前 | 変わったもの |
|---|---|
jobs | ジョブ。起動、ステータスや出力の変化、削除 |
appearance | ヘッダーに表示される設定。テーマ、名前、お知らせ、環境変数 |
designer | デザイナーのロックの取得または解放 |
runners | ランナー(7.3.0 以降)。RTE の接続または切断、参加の要求、承認または拒否、モードや設定の変更 |
名前を受け取ったら、表示しているものを通常の API(たとえば GET /api/v2/job/42 )で、自分の権限で読み直します。 頻繁に変わる名前は、最大でも 1 秒に 1 回しか送られません。
接続を維持する
ストリームはプロキシやロードバランサーを通っても切れないように作られており、クライアントは自動で再接続します。
- 接続すると、サーバーは
helloイベントを送り、再接続の前に 3 秒待つようクライアントに指示します。 - アイドル状態の接続が閉じられないよう、15 秒ごとにコメント行(
: ping)を送ります。:で始まる行は無視してください。 - どのアプリノードからのイベントも、クライアントがどのノードに接続しているかに関係なく、すべてのストリームに届きます。
- 再接続した後は、表示しているものを読み直してください。ストリームが切れている間に送られたイベントは再送されません。
ヘルスとメトリクス
liveness と readiness のプローブ( /api/v2/live 、 /api/v2/ready )と Prometheus のメトリクス( /api/v2/metrics )は、 ユーザーとして動作するスクリプトではなく、監視ツール向けのものです。 監視 を参照してください。