- Introduced a new scheduled task for executing automation rules every 5 minutes in the Celery beat schedule. - Updated URL routing to include a new endpoint for automation-related functionalities. - Refactored imports in various modules to align with the new business layer structure, ensuring backward compatibility for billing models, exceptions, and services.
38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
"""
|
|
Celery configuration for IGNY8
|
|
"""
|
|
import os
|
|
from celery import Celery
|
|
from celery.schedules import crontab
|
|
|
|
# Set the default Django settings module for the 'celery' program.
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'igny8_core.settings')
|
|
|
|
app = Celery('igny8_core')
|
|
|
|
# Using a string here means the worker doesn't have to serialize
|
|
# the configuration object to child processes.
|
|
# - namespace='CELERY' means all celery-related configuration keys
|
|
# should have a `CELERY_` prefix.
|
|
app.config_from_object('django.conf:settings', namespace='CELERY')
|
|
|
|
# Load task modules from all registered Django apps.
|
|
app.autodiscover_tasks()
|
|
|
|
# Celery Beat schedule for periodic tasks
|
|
app.conf.beat_schedule = {
|
|
'replenish-monthly-credits': {
|
|
'task': 'igny8_core.modules.billing.tasks.replenish_monthly_credits',
|
|
'schedule': crontab(hour=0, minute=0, day_of_month=1), # First day of month at midnight
|
|
},
|
|
'execute-scheduled-automation-rules': {
|
|
'task': 'igny8_core.business.automation.tasks.execute_scheduled_automation_rules',
|
|
'schedule': crontab(minute='*/5'), # Every 5 minutes
|
|
},
|
|
}
|
|
|
|
@app.task(bind=True, ignore_result=True)
|
|
def debug_task(self):
|
|
print(f'Request: {self.request!r}')
|
|
|