|
12 | 12 | import os |
13 | 13 | from pathlib import Path |
14 | 14 | from dotenv import load_dotenv |
| 15 | +from typing import Dict |
| 16 | +from scheduler.types import SchedulerConfiguration, Broker, QueueConfiguration |
15 | 17 |
|
16 | 18 | load_dotenv() |
17 | 19 |
|
|
45 | 47 | 'rest_framework', |
46 | 48 | 'rest_framework.authtoken', |
47 | 49 | 'dj_rest_auth', |
| 50 | + 'health_check', # required |
| 51 | + 'health_check.db', # stock Django health checkers |
| 52 | + 'health_check.cache', |
| 53 | + 'health_check.storage', |
| 54 | + 'health_check.contrib.migrations', |
| 55 | + 'health_check.contrib.celery', # requires celery |
| 56 | + 'health_check.contrib.celery_ping', # requires celery |
| 57 | + 'health_check.contrib.redis', # requires Redis broker |
| 58 | + 'scheduler', # django-tasks-scheduler |
48 | 59 | ] |
49 | 60 |
|
50 | 61 | MIDDLEWARE = [ |
|
243 | 254 | # https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field |
244 | 255 |
|
245 | 256 | DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' |
| 257 | + |
| 258 | +# Health Check Configuration |
| 259 | +HEALTH_CHECK = { |
| 260 | + 'DISK_USAGE_MAX': 90, # percent |
| 261 | + 'MEMORY_MIN': 100, # in MB |
| 262 | + 'SUBSETS': { |
| 263 | + 'startup-probe': ['MigrationsHealthCheck', 'DatabaseBackend'], |
| 264 | + 'liveness-probe': ['DatabaseBackend', 'CacheBackend', 'CeleryHealthCheck'], |
| 265 | + 'readiness-probe': ['DatabaseBackend', 'CacheBackend', 'CeleryHealthCheck', 'RedisHealthCheck'], |
| 266 | + }, |
| 267 | +} |
| 268 | + |
| 269 | +# Health Check Cache Key |
| 270 | +HEALTHCHECK_CACHE_KEY = 'pastedir_healthcheck' |
| 271 | + |
| 272 | +# Scheduler Configuration |
| 273 | +SCHEDULER_CONFIG = SchedulerConfiguration( |
| 274 | + EXECUTIONS_IN_PAGE=20, |
| 275 | + SCHEDULER_INTERVAL=10, |
| 276 | + BROKER=Broker.REDIS, |
| 277 | + CALLBACK_TIMEOUT=60, # Callback timeout in seconds (success/failure/stopped) |
| 278 | + # Default values, can be overriden per task/job |
| 279 | + DEFAULT_SUCCESS_TTL=10 * 60, # Time To Live (TTL) in seconds to keep successful job results |
| 280 | + DEFAULT_FAILURE_TTL=365 * 24 * 60 * 60, # Time To Live (TTL) in seconds to keep job failure information |
| 281 | + DEFAULT_JOB_TTL=10 * 60, # Time To Live (TTL) in seconds to keep job information |
| 282 | + DEFAULT_JOB_TIMEOUT=5 * 60, # timeout (seconds) for a job |
| 283 | + # General configuration values |
| 284 | + DEFAULT_WORKER_TTL=10 * 60, # Time To Live (TTL) in seconds to keep worker information after last heartbeat |
| 285 | + DEFAULT_MAINTENANCE_TASK_INTERVAL=10 * 60, # The interval to run maintenance tasks in seconds. 10 minutes. |
| 286 | + DEFAULT_JOB_MONITORING_INTERVAL=30, # The interval to monitor jobs in seconds. |
| 287 | + SCHEDULER_FALLBACK_PERIOD_SECS=120, # Period (secs) to wait before requiring to reacquire locks |
| 288 | +) |
| 289 | + |
| 290 | +SCHEDULER_QUEUES: Dict[str, QueueConfiguration] = { |
| 291 | + 'default': QueueConfiguration(URL='redis://redis:6379/0'), |
| 292 | +} |
0 commit comments