SDKトリガーの制限
Workatoは、パフォーマンスを最適化し、システムの安定性を確保するために、SDKトリガーに特定の制限を適用します。 次のトリガー処理機能に制限を適用します:
デフォルトの制限
このページの制限は、Workatoのベストプラクティスに基づくデフォルト値であり、最適なプラットフォームパフォーマンスを実現するように設定されています。 Enterpriseプラン以上のお客様は、特定のユースケースについてこれらの制限の引き上げをリクエストするために、カスタマーサクセス担当者にお問い合わせいただけます。
| 説明 | 制限 |
|---|---|
| ジョブが生成されない最大連続ポーリング数 | 600 |
| 1回のポーリングにおける最大イベント数 | 1,000 |
ジョブなしでの1つのpollサイクル内の連続poll
制限がない場合、トリガーは有効な結果を取得するために連続してpollを実行できます。 SDKトリガーのpollレスポンス内のcan_poll_moreブール属性が、この動作を制御します。 Workatoは、ジョブが生成されない場合、1つのpollサイクル内の連続pollに制限を適用します。
スロットリングメカニズム
Workatoは、ジョブを生成せずに連続してpollを実行するトリガーをスロットルします。 スロットリングにより、不要なポーリングが最小限に抑えられ、システムの安定性が確保されます。 トリガーは、ジョブを生成せずに1つのpollサイクル内で連続600回のpollに制限され、その後Workatoはポーリングを5分間一時停止します。 このしきい値は時間の経過とともに徐々に下がり、連続50回のpollになります。
トリガーがこの制限を超えると、Workatoはポーリングを5分間一時停止します。 一時停止後、ポーリングは自動的に再開され、カウンターは停止した時点から継続します。 次のpollでもジョブが生成されない場合、Workatoはポーリングをさらに5分間再度一時停止します。 pollによってジョブが生成されると、カウンターはゼロにリセットされます。
can_poll_moreがfalseになるとpollサイクルが終了し、それまでこのパターンが繰り返されます。 制限に達した後、トリガーはジョブを生成しない場合、5分に1回しかpollを実行できません。
スロットリング通知
Workatoは、レシピがスロットルされるとメール通知を自動送信します。 これらの通知は関連する詳細を提供し、スロットルされたレシピについて常に把握できるようにします。
スロットリング通知の受信者
Workatoは、スロットルされたレシピに関する次の通知を、ロールに基づいて特定の受信者に送信します:
- ワークスペース管理者: 通知は、レシピが実行されるワークスペースの管理者に直接送信されます。
- Embeddedパートナー: 通知は、Embeddedパートナーのワークスペースメールに送信されます。 Embedded顧客はこれらの通知を受信しません。
スロットリング通知の詳細
Workatoは、スロットルされたレシピについて常に把握できるように、2つの重要な時点で通知を提供します。 レシピが初めてスロットルされると、Workatoはスロットリングイベントに関する詳細を含むメールを送信します。 これにより、レシピに影響する問題をすぐに認識できます。
さらに、毎月末に、Workatoはその月にスロットルされたすべてのレシピを一覧表示したサマリーメールを送信します。 このメールは、スロットルされたレシピの包括的な概要を提供し、リマインダーとして機能します。
1つのpoll内のイベント数
制限がない場合、1つのpollで無制限の数のレコードを取得できるため、プラットフォームに過剰な負荷がかかる可能性があります。 Workatoは、SDKコネクタートリガーで1つのpollから生成されるイベント数を1,000に制限します。
pollとイベントのカウント基準
pollとは、外部システムの新しいデータを確認するためにトリガーが行う1回のリクエストです。 これは、SDKトリガー内のpollブロックの1回の呼び出しです。
イベントとは、pollから返されるレスポンス内のevents配列の1つのレコードです。 Workatoは各イベントをジョブに変換します。 通常、1つのイベントで1つのジョブが作成されます。
トリガーでページネーションを使用する
外部APIが1,000件を超えるレコードを返す場合は、pollロジックにページネーションを実装して、結果を複数のpollに分割する必要があります。
通常、これは次の方法で行います:
- 適切なページサイズを設定します。 例:
request_page_size = 100 next_pollキーでオフセット、タイムスタンプ、またはトークンを追跡します- デフォルトの5分間隔を待つ代わりにすぐに再度pollするには、
can_poll_more: trueを設定します
例:
poll: lambda do |connection, input, closure, _eis, _eos|
updated_since = (closure || input['since']).to_time.utc.iso8601
request_page_size = 100
response = get("/records/endpoint").params(
updated_since: updated_since,
page_size: request_page_size
)
next_updated_since = response['data'].last['updated_at'] unless response['data'].blank?
{
events: response['data'], # Array of jobs
next_poll: next_updated_since, # Pass cursor for next poll
can_poll_more: response['total_records'] >= request_page_size # Trigger next poll immediately
}
end10,000件のレコードがある場合、この設定では100回のpollに分けて取得します。 各pollは最大100件のレコードを返し、それによって100件のイベントと100件のジョブが生成されます。 このアプローチは、pollあたり1,000イベントの制限を満たします。
制限メカニズム
トリガーが1つのpollで過剰な数のイベントを取得した場合、Workatoはレシピを停止します。 これにより、システムの過負荷を防ぎ、安定性を確保します。 2025年6月9日以降、トリガーは1つのpollで1000イベントに制限されます。 トリガーがこの制限を超えると、レシピは停止されます。
停止されたレシピの通知
Workatoは、レシピが停止されるとメール通知を自動送信します。 これらの通知は関連する詳細を提供し、影響を受けるレシピについて常に把握できるようにします。
通知の受信者
Workatoは、停止されたレシピに関する次の通知を、ロールに基づいて特定の受信者に送信します:
- ワークスペース管理者: 通知は、レシピが実行されるワークスペースの管理者に直接送信されます。
- Embeddedパートナー: 通知は、Embeddedパートナーのワークスペースメールに送信されます。 Embedded顧客はこれらの通知を受信しません。
通知の詳細
Workatoは、制限により停止されたレシピについて常に把握できるように、2つの重要な時点で通知を提供します。
レシピが初めて停止されると、Workatoはそのレシピに関する情報を含むメールを送信します。 これにより、レシピに影響する問題をすぐに認識できます。
さらに、Workatoは影響を受けるすべてのレシピを一覧表示した月次サマリーメールを送信します。 このサマリーは、影響を受けたレシピの全体像を示し、リマインダーとして機能します。
よくある質問
制限は時間の経過に伴うイベントの合計に適用されるか
いいえ。 制限は、時間の経過とともに処理されたイベントの合計数ではなく、個々のpollごとに適用されます。
トリガーで100,000件のイベントを処理する必要がある場合
複数のpollに分けて処理できます。 たとえば、それぞれ1,000件のイベントを含む100回のpollを使用します。
Last updated: