Files
guilan-ace-backend/config/services/celery.py

59 lines
1.8 KiB
Python

"""Celery application configuration and scheduling."""
import os
from celery import Celery
from celery.schedules import crontab
from decouple import config
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.development')
app = Celery('config')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
app.conf.update(
broker_url=config('REDIS_URL', default='redis://localhost:6379/0'),
result_backend=config('REDIS_URL', default='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,
task_soft_time_limit=60,
worker_prefetch_multiplier=1,
worker_max_tasks_per_child=1000,
)
app.conf.beat_schedule = {
'send-event-reminders': {
'task': 'apps.communications.tasks.send_event_reminders',
'schedule': crontab(minute=0, hour='*/1'),
},
'cleanup-notification-retention': {
'task': 'apps.notifications.tasks.cleanup_notification_retention',
'schedule': crontab(hour=2, minute=0),
},
'sweep-stale-payment-verifications': {
'task': 'apps.payments.sweep_stale_payment_verifications',
'schedule': crontab(minute='*/5'),
},
'expire-stale-registration-checkouts': {
'task': 'apps.events.expire_stale_registration_checkouts',
'schedule': crontab(minute='*'),
},
'deliver-registration-notifications': {
'task': 'apps.events.deliver_pending_registration_notifications',
'schedule': crontab(minute='*'),
},
'sweep-pending-refunds': {
'task': 'apps.payments.sweep_pending_refunds',
'schedule': crontab(minute='*/5'),
},
}
CELERY_TASK_SOFT_TIME_LIMIT = 20
CELERY_TASK_TIME_LIMIT = 30