| from celery import Celery | |
| from celery.schedules import crontab | |
| from backend.config import Config | |
| def make_celery_beat(app_name=__name__): | |
| """Create and configure Celery Beat scheduler.""" | |
| celery_beat = Celery(app_name) | |
| # Configure Celery Beat using the Flask app's config | |
| celery_beat.conf.update( | |
| broker_url=Config.CELERY_BROKER_URL, | |
| result_backend=Config.CELERY_RESULT_BACKEND, | |
| task_serializer='json', | |
| accept_content=['json'], | |
| result_serializer='json', | |
| timezone='UTC', | |
| enable_utc=True, | |
| result_expires=3600, # Results expire after 1 hour | |
| beat_schedule={ | |
| # Example scheduled tasks - adjust as needed | |
| # 'example-task': { | |
| # 'task': 'backend.tasks.example_task', | |
| # 'schedule': crontab(minute=0, hour='*/6'), # Every 6 hours | |
| # }, | |
| }, | |
| worker_prefetch_multiplier=1, | |
| task_acks_late=True, | |
| ) | |
| return celery_beat | |
| # Create the Celery Beat instance | |
| celery_beat = make_celery_beat() |