120 lines
5.1 KiB
Python
120 lines
5.1 KiB
Python
"""
|
||
Расписание периодических задач 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),
|
||
},
|
||
}
|
||
|