ライブイベント

ポーリングせずに、ジョブや設定の変更を受け取ります

  1. ストリーム
  2. イベント名
  3. 接続を維持する
  4. ヘルスとメトリクス

サーバーは、変更が起きるとその都度クライアントに通知します。スクリプトも、数秒ごとにジョブを読み取る代わりに、これを受け取ることができます。


ストリーム

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 )は、 ユーザーとして動作するスクリプトではなく、監視ツール向けのものです。 監視 を参照してください。