render-background-workers について
Render 上のバックグラウンドワーカーを設計・運用する人向けのガイドです。キューフレームワーク、Key Value、Blueprint、グレースフルシャットダウン、ワーカー・Cron Job・Workflow の選択を扱います。
主な機能
- 01キューワーカーのポーリング方式の説明
- 02Celery、Sidekiq、BullMQ などの紹介
- 03ジョブブローカーとしての Key Value の設定
- 04Blueprint によるサービス設定
- 05グレースフルシャットダウンとジョブ処理
活用シーン
- 01常時稼働するキューコンシューマーの設定
- 02Redis キュー用 Key Value の構成
- 03デプロイ中に実行中のジョブを完了またはチェックポイント保存
- 04ワーカー、Cron Job、Workflow の選択
MCP 対応
このスキル自体は MCP サーバーではありません。関連するデプロイ作業として Render MCP/Dashboard フローに触れていますが、MCP インターフェースの機能は説明していません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ render-oss/ skills --skill render-background-workersインストール後、Claude Code で/render-background-workersを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/deployments.mdgraceful-shutdown.mdprivate-networking.mdqueue-framework-setup.mdservice-types.md詳細
Render のバックグラウンドワーカー
このスキルでは、HTTP を処理するのではなく、キューからジョブを消費するプロセスである、Render のワーカーサービスについて説明します。render.yaml とプライベート接続を設定する際は、render-blueprints、render-env-vars、render-networkingと併用してください。
使用する場面
- キューを使うワーカー(Celery、Sidekiq、BullMQ、Asynq など)の設計やデバッグ
- バックグラウンド処理にワーカー、Cron Job、Workflowのどれを使うか選ぶとき
- Render Key Valueをキャッシュではなくブローカーとして、適切なエビクションポリシーで設定するとき
- デプロイ中に処理中のジョブが失われないよう、グレースフルシャットダウンを実装するとき
フレームワークごとの設定とシグナル処理の詳細:references/queue-framework-setup.md、references/graceful-shutdown.md。
デプロイ、再起動、またはシャットダウン動作の変更前に、references/deployments.mdを読んでください。
ワーカーのアウトバウンドプライベートネットワーク接続を設定またはトラブルシューティングする前に、references/private-networking.mdを読んでください。
ワーカー、Cron Job、Workflow のどれを使うか選ぶ際は、references/service-types.mdを読んでください。
ワーカーの仕組み
- インバウンド(HTTP)トラフィックを受け取らない長時間稼働するサービスです。Render は、Web サービスやプライベートサービスのように、ワーカーにパブリック URL や内部ホスト名を公開しません。つまり、ワーカーはワーカー宛てのプライベートネットワークトラフィックを受信できません。
- 一般的なパターンはポーリングループです。プロセスがキューバックエンド(多くの場合、Redis 互換のValkey 8であるRender Key Value)に接続し、ジョブを取得します。
- ワーカーはプライベートネットワーク経由で、PostgreSQL、Key Value、プライベートサービス、Web サービス(内部 URL)、およびパブリックインターネットへのアウトバウンド接続を開始できます。プランとファイアウォールルールが適用されます。
キューフレームワークの概要
| フレームワーク | 言語 | キューバックエンド | 備考 |
|---|---|---|---|
| Celery | Python | Key Value | Python で最も一般的なタスクキュー |
| Sidekiq | Ruby | Key Value | Rails の標準 |
| BullMQ | Node.js | Key Value | モダンな Node キュー |
| Asynq | Go | Key Value | Go の非同期タスク処理 |
| Oban | Elixir | Postgres(Key Value キューではありません) | キューはデータベースに保存されます |
Key Value との連携
- フレームワークが Redis を必要とする場合、Render Key Valueをジョブブローカーとして使用してください。
- maxmemory ポリシーを**
noevictionに設定してください。allkeys-lruなどのポリシーはキャッシュ**向けです。キューキーがエビクトされると、ジョブが失われます。 - Blueprint で
type: keyvalueとproperty: connectionStringを指定した **fromService**を使い、REDIS_URL(またはフレームワークに応じた同等の環境変数)を設定してください。 - Blueprint では Key Value に
ipAllowListが必要です。インスタンスへの接続を許可する CIDR を含めてください(プライベートネットワークのみでアクセスする場合は、多くの場合[]です。render-blueprints/Key Value フィールドのリファレンスを参照)。
最小限のアプリと YAML の例については、references/queue-framework-setup.mdを参照してください。
ワーカー、Cron、Workflow の比較
| 必要なもの | 使用するもの | 理由 |
|---|---|---|
| 常時稼働するキューコンシューマー | Background Worker | 継続的にポーリングする長時間稼働プロセスです |
| 定期的にスケジュールされたタスク | Cron Job | スケジュールに従って実行され、終了します。1 回の実行は最大 12 時間です |
| 分散並列計算 | Workflow | 実行ごとに専用のインスタンスが割り当てられ、ファンアウトパターンに対応します |
| 大量またはバースト性のあるジョブ | Workflow | 継続稼働するワーカーインスタンスを使わず、実行ごとにスケールします |
グレースフルシャットダウン
- ワーカーは、(1)新しいジョブの受け付けを停止し、(2)現在のジョブを完了するか進捗をチェックポイントに保存し、**(3)接続を閉じ、(4)**終了コード 0で終了してください。
- Render の現在の処理停止、シグナル、シャットダウン遅延の動作については、
references/deployments.mdに従ってください。
言語およびフレームワーク固有のハンドラー:references/graceful-shutdown.md。
Blueprint の設定
最小構成のパターンは、type: worker、runtime、buildCommand、startCommand、および Key Value から設定する**envVars**です。
services:
- type: keyvalue
name: jobs
plan: starter
region: oregon
maxmemoryPolicy: noeviction
ipAllowList: []
- type: worker
name: task-worker
runtime: python
region: oregon
plan: starter
buildCommand: pip install -r requirements.txt
startCommand: celery -A tasks worker --loglevel=info
envVars:
- key: REDIS_URL
fromService:
name: jobs
type: keyvalue
property: connectionString
オプション:処理停止に時間がかかるジョブ向けに、ワーカーサービスで**maxShutdownDelaySeconds**を設定できます。
参考資料
| トピック | ファイル |
|---|---|
| Celery、Sidekiq、BullMQ、Asynq、Oban のセットアップと YAML | references/queue-framework-setup.md |
SIGTERM、maxShutdownDelaySeconds、言語ごとのパターン | references/graceful-shutdown.md |
| デプロイのライフサイクル、シャットダウン、再起動、検証 | references/deployments.md |
| プライベートネットワークの範囲、内部アドレス、トラブルシューティング | references/private-networking.md |
| サービスタイプの選択と実行モデル | references/service-types.md |
関連スキル
- render-deploy — 初回デプロイ、CLI、サービスの作成
- render-blueprints —
render.yamlの完全なスキーマ、fromService、プロジェクト - render-networking — プライベート URL、呼び出し可能な対象
- render-scaling — ワーカープラン、インスタンス数、制限
現行ドキュメントの取得
このスキルで現行の Render ドキュメントを参照するよう指示された場合は、必ず次の手順に従ってください。
curlなど、利用可能な URL 取得ツールまたは HTTP クライアントを使って、リンク先の Markdown ドキュメントを直接取得してください。ウェブ検索の要約でドキュメントを代用しないでください。- 取得に成功し、想定したドキュメントが返されたことを確認してから、内容を読んでください。ファイルを保存したり、そのパスを表示したりするだけでは不十分です。
- リクエストに失敗した場合、またはツールで Markdown の応答を読み取れない場合は、リンク先の HTML 版を開いて読んでください。
- どちらの版も取得できない場合は、現行の参照資料が利用できないことを明示し、そのスキルに記載されたトピック固有の代替手順に従ってください。安定した制約に限って同梱のガイダンスを使用し、変更される可能性のあるプラットフォームの詳細を推測しないでください。
複数の参照資料が必要なタスクでは、それぞれについてこの手順を適用し、確認済みのドキュメントと利用できないドキュメントを区別してください。