background-job-processing
Implement background job processing systems with task queues, workers, scheduling, and retry mechanisms. Use when handling long-running tasks, sending emails, generating reports, and processing large datasets asynchronously.
适合你,如果需要在后台处理耗时操作而不阻塞用户请求
npx oh-my-skill add aj-geddes/useful-ai-prompts/background-job-processingcurl -fsSL https://oh-my-skill.com/install.sh | bash -s -- aj-geddes/useful-ai-prompts/background-job-processingnpx oh-my-skill verify aj-geddes/useful-ai-prompts/background-job-processing怎么用
商店整理自技能原文 · 版本 3f5182c · 表述以原文为准Claude会帮你设计和生成后台作业处理系统的代码与配置,包括任务队列、工作线程、调度和重试机制,实现异步任务执行。
当用户需要异步处理长时间运行的任务、发送邮件、生成报告或处理大数据集时触发。
技能原文 SKILL.md
Background Job Processing
Table of Contents
- [Overview](#overview)
- [When to Use](#when-to-use)
- [Quick Start](#quick-start)
- [Reference Guides](#reference-guides)
- [Best Practices](#best-practices)
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:
| Guide | Contents | |---|---| | [Python with Celery and Redis](references/python-with-celery-and-redis.md) | Python with Celery and Redis | | [Node.js with Bull Queue](references/nodejs-with-bull-queue.md) | Node.js with Bull Queue | | [Ruby with Sidekiq](references/ruby-with-sidekiq.md) | Ruby with Sidekiq | | [Job Retry and Error Handling](references/job-retry-and-error-handling.md) | Job Retry and Error Handling | | [Monitoring and Observability](references/monitoring-and-observability.md) | Monitoring 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