mcpField
B
background-job-processing

background-job-processing

github.com/aj-geddesDevelopment373485 installsUpdated 34w ago
Repository

About background-job-processing

A skill for designing background job systems that run asynchronous tasks using queues and workers. It supports developers handling scheduled, long-running, or compute-intensive work, with guides for several job-processing libraries and operational practices.

Key features

  1. 01Distributed task queues and worker pools
  2. 02Job scheduling and retries
  3. 03Error handling and monitoring
  4. 04Guides for Celery, Bull, and Sidekiq
  5. 05Queue and job observability

Use cases

  1. 01Sending emails asynchronously
  2. 02Generating reports and exports
  3. 03Processing large datasets
  4. 04Scheduling recurring tasks

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill background-job-processing

After installing, type/background-job-processingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with 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

Details

From the project README

Background Job Processing

Table of Contents

Overview

Build robust background job processing systems with distributed task queues, worker pools, job scheduling, error handling, retry policies, and monitoring for efficient asynchronous task execution.

When to Use

  • Handling long-running operations asynchronously
  • Sending emails in background
  • Generating reports or exports
  • Processing large datasets
  • Scheduling recurring tasks
  • Distributing compute-intensive operations

Quick Start

Minimal working example:

# 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)

Reference Guides

Detailed implementations in the references/ directory:

GuideContents
Python with Celery and RedisPython with Celery and Redis
Node.js with Bull QueueNode.js with Bull Queue
Ruby with SidekiqRuby with Sidekiq
Job Retry and Error HandlingJob Retry and Error Handling
Monitoring and ObservabilityMonitoring and Observability

Best Practices

✅ DO
  • Use task timeouts to prevent hanging jobs
  • Implement retry logic with exponential backoff
  • Make tasks idempotent
  • Use job priorities for critical tasks
  • Monitor queue depths and job failures
  • Log job execution details
  • Clean up completed jobs
  • Set appropriate batch sizes for memory efficiency
  • Use dead-letter queues for failed jobs
  • Test jobs independently
❌ DON'T
  • Use synchronous operations in async tasks
  • Ignore job failures
  • Make tasks dependent on external state
  • Use unbounded retries
  • Store large objects in job data
  • Forget to handle timeouts
  • Run jobs without monitoring
  • Use blocking operations in queues
  • Forget to track job progress
  • Mix unrelated operations in one job

Comments

Markdown supported