uchill/backend/config/celery_beat_schedule.py

120 lines
5.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Расписание периодических задач Celery Beat.
"""
from celery.schedules import crontab
# Расписание периодических задач
CELERY_BEAT_SCHEDULE = {
# Отправка отложенных уведомлений (каждую минуту)
'send-scheduled-notifications': {
'task': 'apps.notifications.tasks.send_scheduled_notifications',
'schedule': 60.0, # каждые 60 секунд
},
# Очистка старых уведомлений (каждый день в 3:00)
'cleanup-old-notifications': {
'task': 'apps.notifications.tasks.cleanup_old_notifications',
'schedule': crontab(hour=3, minute=0),
},
# Очистка старых записей видео (каждый день в 4:00)
'cleanup-old-recordings': {
'task': 'apps.video.tasks.cleanup_old_recordings',
'schedule': crontab(hour=4, minute=0),
},
# Завершение неактивных видеокомнат (каждые 5 минут)
'end-inactive-rooms': {
'task': 'apps.video.tasks.end_inactive_rooms',
'schedule': 300.0, # каждые 5 минут
},
# Автоматическое завершение видеокомнат, идущих более 10 минут (каждые 10 минут)
'auto-end-long-rooms': {
'task': 'apps.video.tasks.auto_end_long_rooms',
'schedule': 600.0, # каждые 10 минут
},
# ============================================
# ЗАДАЧИ РАСПИСАНИЯ ЗАНЯТИЙ
# ============================================
# Автоматическое начало занятий по времени (каждую минуту)
'start-lessons-automatically': {
'task': 'apps.schedule.tasks.start_lessons_automatically',
'schedule': 60.0, # каждые 60 секунд
},
# Проверка истекших подписок (каждый день в 00:00)
'check-expired-subscriptions': {
'task': 'apps.subscriptions.tasks.check_expired_subscriptions',
'schedule': crontab(hour=0, minute=0),
},
# Предупреждения об истечении подписок (каждый день в 10:00)
'send-expiration-warnings': {
'task': 'apps.subscriptions.tasks.send_expiration_warnings',
'schedule': crontab(hour=10, minute=0),
},
# Автопродление подписок (каждый день в 02:00)
'auto-renew-subscriptions': {
'task': 'apps.subscriptions.tasks.auto_renew_subscriptions',
'schedule': crontab(hour=2, minute=0),
},
# Сброс месячного использования (1-го числа в 00:00)
'reset-monthly-usage': {
'task': 'apps.subscriptions.tasks.reset_monthly_usage',
'schedule': crontab(day_of_month=1, hour=0, minute=0),
},
# Очистка старой истории платежей (1-го числа в 03:00)
'cleanup-old-payment-history': {
'task': 'apps.subscriptions.tasks.cleanup_old_payment_history',
'schedule': crontab(day_of_month=1, hour=3, minute=0),
},
# Генерация отчетов по подпискам (1-го числа в 09:00)
'generate-subscription-reports': {
'task': 'apps.subscriptions.tasks.generate_subscription_reports',
'schedule': crontab(day_of_month=1, hour=9, minute=0),
},
# ============================================
# ЗАДАЧИ ДОМАШНИХ ЗАДАНИЙ
# ============================================
# Напоминания о дедлайнах домашних заданий (каждый день в 09:00)
'send-homework-deadline-reminders': {
'task': 'apps.homework.tasks.send_homework_deadline_reminders',
'schedule': crontab(hour=9, minute=0),
},
# Автоматическая проверка домашних заданий через AI (каждые 30 минут)
'auto-check-homework-submissions': {
'task': 'apps.homework.tasks.auto_check_homework_submissions',
'schedule': 1800.0, # каждые 30 минут
},
# Проверка просроченных домашних заданий (каждый день в 08:00)
'check-overdue-homeworks': {
'task': 'apps.homework.tasks.check_overdue_homeworks',
'schedule': crontab(hour=8, minute=0),
},
# Обновление статистики домашних заданий (каждый день в 02:00)
'update-homework-statistics': {
'task': 'apps.homework.tasks.update_homework_statistics',
'schedule': crontab(hour=2, minute=0),
},
# Очистка старых данных домашних заданий (1-го числа в 05:00)
'cleanup-old-homework-data': {
'task': 'apps.homework.tasks.cleanup_old_homework_data',
'schedule': crontab(day_of_month=1, hour=5, minute=0),
},
}