mcpField
B
background-job-processing

background-job-processing

github.com/aj-geddes開発373485 回インストール34 週間前に更新
リポジトリ

background-job-processing について

キューとワーカープールを使ったバックグラウンドジョブシステムの構築を扱うスキルです。定期実行、長時間処理、計算負荷の高いタスクを扱う開発者向けに、複数のライブラリのガイドと運用方法を提供します。

主な機能

  1. 01分散タスクキューとワーカープール
  2. 02ジョブのスケジューリングと再試行
  3. 03エラー処理と監視
  4. 04Celery、Bull、Sidekiq のガイド
  5. 05キューとジョブの可観測性

活用シーン

  1. 01メールの非同期送信
  2. 02レポートやエクスポートの生成
  3. 03大規模データセットの処理
  4. 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.md
monitoring-and-observability.md
nodejs-with-bull-queue.md
python-with-celery-and-redis.md
ruby-with-sidekiq.md
scripts/
health-check.sh
templates/
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 RedisCelery と Redis を使用した Python
Node.js with Bull QueueBull Queue を使用した Node.js
Ruby with SidekiqSidekiq を使用した Ruby
Job Retry and Error Handlingジョブの再試行とエラー処理
Monitoring and Observabilityモニタリングと可観測性

ベストプラクティス

✅ DO
  • ジョブが停止したままになるのを防ぐため、タスクのタイムアウトを設定します
  • 指数バックオフを用いた再試行ロジックを実装します
  • タスクを冪等にします
  • 重要なタスクにはジョブの優先度を設定します
  • キューの深さとジョブの失敗を監視します
  • ジョブの実行状況をログに記録します
  • 完了したジョブをクリーンアップします
  • メモリ効率を考慮して適切なバッチサイズを設定します
  • 失敗したジョブにはデッドレターキューを使用します
  • ジョブを個別にテストします
❌ DON'T
  • 非同期タスクで同期処理を使用しないでください
  • ジョブの失敗を無視しないでください
  • タスクを外部の状態に依存させないでください
  • 上限のない再試行を使用しないでください
  • 大きなオブジェクトをジョブデータに保存しないでください
  • タイムアウトへの対処を忘れないでください
  • 監視せずにジョブを実行しないでください
  • キュー内でブロッキング処理を使用しないでください
  • ジョブの進捗状況の追跡を忘れないでください
  • 無関係な処理を1つのジョブにまとめないでください

コメント