initial commit. phase 1 complete

This commit is contained in:
2026-05-05 20:45:19 +02:00
parent d9c68313a0
commit 89e058ffac
20631 changed files with 3224610 additions and 43 deletions
+62
View File
@@ -0,0 +1,62 @@
"""
Celery application for LabGraph.
Referenced by docker-compose as: celery -A config.celery <subcommand>
Queues:
discovery — Proxmox API polling, nmap network scans
heartbeat — Periodic ICMP/TCP liveness checks
default — Maintenance, cleanup, housekeeping
"""
import os
from celery import Celery
from celery.schedules import crontab
from kombu import Exchange, Queue
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.development")
app = Celery("labgraph")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks(["tasks"])
# Explicit queue definitions (mirrors --queues flag in docker-compose worker command)
app.conf.task_queues = (
Queue("default", Exchange("default"), routing_key="default"),
Queue("discovery", Exchange("discovery"), routing_key="discovery"),
Queue("heartbeat", Exchange("heartbeat"), routing_key="heartbeat"),
)
app.conf.task_default_queue = "default"
app.conf.task_default_exchange = "default"
app.conf.task_default_routing_key = "default"
# Route tasks to queues by module prefix
app.conf.task_routes = {
"tasks.discovery.*": {"queue": "discovery"},
"tasks.heartbeat.*": {"queue": "heartbeat"},
"tasks.maintenance.*": {"queue": "default"},
}
app.conf.beat_schedule = {
"heartbeat-all-nodes": {
"task": "tasks.heartbeat.check_all_nodes",
"schedule": 60.0,
"queue": "heartbeat",
# Drop task if not picked up before the next run fires
"options": {"expires": 55},
},
"discovery-scan-networks": {
"task": "tasks.discovery.scan_all_networks",
"schedule": crontab(minute="*/15"),
"queue": "discovery",
},
"maintenance-prune-heartbeat-logs": {
"task": "tasks.maintenance.prune_old_heartbeat_logs",
"schedule": crontab(hour=3, minute=0),
"queue": "default",
},
}