background-job-processing について
キューとワーカープールを使ったバックグラウンドジョブシステムの構築を扱うスキルです。定期実行、長時間処理、計算負荷の高いタスクを扱う開発者向けに、複数のライブラリのガイドと運用方法を提供します。
主な機能
- 01分散タスクキューとワーカープール
- 02ジョブのスケジューリングと再試行
- 03エラー処理と監視
- 04Celery、Bull、Sidekiq のガイド
- 05キューとジョブの可観測性
活用シーン
- 01メールの非同期送信
- 02レポートやエクスポートの生成
- 03大規模データセットの処理
- 04定期タスクのスケジュール
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ aj-geddes/ useful-ai-prompts --skill background-job-processingインストール後、Claude Code で/background-job-processingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/job-retry-and-error-handling.mdmonitoring-and-observability.mdnodejs-with-bull-queue.mdpython-with-celery-and-redis.mdruby-with-sidekiq.mdscripts/health-check.shtemplates/dashboard-config.yaml詳細
バックグラウンドジョブ処理
目次
概要
分散タスクキュー、ワーカープール、ジョブスケジューリング、エラー処理、再試行ポリシー、モニタリングを備えた堅牢なバックグラウンドジョブ処理システムを構築し、非同期タスクを効率的に実行します。
使用する場面
- 時間のかかる処理を非同期で実行する
- メールをバックグラウンドで送信する
- レポートやエクスポートを生成する
- 大規模なデータセットを処理する
- 定期タスクをスケジュールする
- 計算負荷の高い処理を分散する
クイックスタート
最小限の動作する例:
# celery_app.py
from celery import Celery
from kombu import Exchange, Queue
import os
app = Celery('myapp')
# Configuration
app.conf.update(
broker_url=os.getenv('REDIS_URL', 'redis://localhost:6379/0'),
result_backend=os.getenv('REDIS_URL', 'redis://localhost:6379/0'),
task_serializer='json',
accept_content=['json'],
result_serializer='json',
timezone='UTC',
enable_utc=True,
task_track_started=True,
task_time_limit=30 * 60, # 30 minutes
task_soft_time_limit=25 * 60, # 25 minutes
broker_connection_retry_on_startup=True,
)
# Queue configuration
default_exchange = Exchange('tasks', type='direct')
app.conf.task_queues = (
// ... (see reference guides for full implementation)
リファレンスガイド
詳細な実装は references/ ディレクトリにあります:
| ガイド | 内容 |
|---|---|
| Python with Celery and Redis | Celery と Redis を使用した Python |
| Node.js with Bull Queue | Bull Queue を使用した Node.js |
| Ruby with Sidekiq | Sidekiq を使用した Ruby |
| Job Retry and Error Handling | ジョブの再試行とエラー処理 |
| Monitoring and Observability | モニタリングと可観測性 |
ベストプラクティス
✅ DO
- ジョブが停止したままになるのを防ぐため、タスクのタイムアウトを設定します
- 指数バックオフを用いた再試行ロジックを実装します
- タスクを冪等にします
- 重要なタスクにはジョブの優先度を設定します
- キューの深さとジョブの失敗を監視します
- ジョブの実行状況をログに記録します
- 完了したジョブをクリーンアップします
- メモリ効率を考慮して適切なバッチサイズを設定します
- 失敗したジョブにはデッドレターキューを使用します
- ジョブを個別にテストします
❌ DON'T
- 非同期タスクで同期処理を使用しないでください
- ジョブの失敗を無視しないでください
- タスクを外部の状態に依存させないでください
- 上限のない再試行を使用しないでください
- 大きなオブジェクトをジョブデータに保存しないでください
- タイムアウトへの対処を忘れないでください
- 監視せずにジョブを実行しないでください
- キュー内でブロッキング処理を使用しないでください
- ジョブの進捗状況の追跡を忘れないでください
- 無関係な処理を1つのジョブにまとめないでください
コメント
Markdown 対応