Celery is a distributed task queue used for background job processing in RapidPM.
| Feature |
Purpose |
| Email Sending |
Async email delivery |
| Report Generation |
Background PDF/Excel generation |
| Scheduled Tasks |
Recurring maintenance jobs |
| Document Processing |
Async file conversions |
| Environment |
Version |
| All |
5.4.0 |
| Server |
Container |
Mode |
| rapidpm-prod |
rapid-pm_worker_1 |
Worker + Beat |
| rapidpm-test |
rapid-pm-worker-1 |
Worker + Beat |
| Local |
Manual process |
Worker + Beat |
# celery_app.py
celery_app = Celery(
'rapidpm',
broker=os.environ.get('REDIS_URL'),
backend=os.environ.get('REDIS_URL')
)
celery_app.conf.update(
task_serializer='json',
accept_content=['json'],
result_serializer='json',
timezone='UTC',
enable_utc=True,
)
¶ Docker Command
celery -A celery_app.celery_app worker --beat --loglevel=info
@celery_app.task
def send_email(to, subject, body):
# Async email sending
pass
celery_app.conf.beat_schedule = {
'daily-cleanup': {
'task': 'tasks.cleanup',
'schedule': crontab(hour=2, minute=0),
},
}
Type: BSD-3-Clause (Open Source)
Cost: Free
See Licenses for details.
app/
├── celery_app.py # Celery app configuration
└── tasks/
├── email_tasks.py # Email sending tasks
└── report_tasks.py # Report generation
# Check worker status
docker logs rapid-pm_worker_1 --tail 50
# List active tasks
celery -A celery_app inspect active
# Purge all tasks
celery -A celery_app purge
| Issue |
Solution |
| Tasks not running |
Check Redis connection |
| Beat not scheduling |
Ensure --beat flag is set |
| Worker crashed |
Check logs, restart container |