Files
andros bdd181425b Initial commit: Django LiveView vs Phoenix LiveView benchmark
Docker Compose project with automated Playwright benchmarks comparing
django-liveview 2.2.0 against Phoenix LiveView 1.0 across 6 scenarios.
2026-05-15 15:46:50 +02:00

58 lines
1.7 KiB
Python

import random
from django.template.loader import render_to_string
from liveview.decorators import liveview_handler
from liveview.connections import send
from app.models import Alert
ALERT_TYPES = [Alert.TYPE_INFO, Alert.TYPE_WARNING, Alert.TYPE_CRITICAL]
DESCRIPTIONS = [
"CPU usage above 90%",
"Memory leak detected in worker",
"Disk space below 10%",
"Network timeout on upstream",
"Service unreachable: auth",
"Database slow query detected",
"HTTP 5xx rate spike",
"SSL certificate expiring soon",
"Replica lag too high",
"Queue backlog growing",
]
def _random_alert():
return Alert.objects.create(
alert_type=random.choice(ALERT_TYPES),
description=random.choice(DESCRIPTIONS),
)
def _send_table(consumer, alerts):
html = render_to_string("components/_alerts_table.html", {"alerts": alerts})
send(consumer, {"target": "#alerts-container", "html": html})
send(consumer, {"target": "#alert-count", "html": str(len(alerts))})
@liveview_handler("add_alert")
def add_alert(consumer, content):
_random_alert()
_send_table(consumer, list(Alert.objects.all()))
@liveview_handler("delete_alert")
def delete_alert(consumer, content):
alert_id = content.get("data", {}).get("alert_id")
if alert_id:
Alert.objects.filter(id=alert_id).delete()
_send_table(consumer, list(Alert.objects.all()))
@liveview_handler("search_alerts")
def search_alerts(consumer, content):
query = content.get("form", {}).get("query", "")
if query:
alerts = list(Alert.objects.filter(description__icontains=query))
else:
alerts = list(Alert.objects.all())
_send_table(consumer, alerts)