analyze performance upgrade

This commit is contained in:
DaStra3003
2026-09-23 08:01:49 +02:00
parent aabe35fead
commit 7f7b753350
51 changed files with 5827 additions and 1372 deletions
+66
View File
@@ -47,6 +47,7 @@ MIDDLEWARE = [
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
"IoTAnalyzer.middleware.RequestLogMiddleware",
]
ROOT_URLCONF = "IoTPreTester.urls"
@@ -118,6 +119,71 @@ STATIC_ROOT = BASE_DIR / "staticfiles"
CAPTURE_UPLOAD_DIR = Path(
os.environ.get("CAPTURE_UPLOAD_DIR", BASE_DIR.parent / "uploads")
)
def env_int(name: str, default: int) -> int:
try:
return int(os.environ.get(name, default))
except (TypeError, ValueError):
return default
# Bounds for a single capture analysis pass. 0 disables the packet limit and
# reads the capture completely; large captures then take correspondingly longer.
CAPTURE_PACKET_LIMIT = env_int("CAPTURE_PACKET_LIMIT", 0)
CAPTURE_MAX_TEXT_PAYLOADS = env_int("CAPTURE_MAX_TEXT_PAYLOADS", 20000)
CAPTURE_MAX_PAYLOAD_CHARS = env_int("CAPTURE_MAX_PAYLOAD_CHARS", 16384)
# --- Logging -----------------------------------------------------------------
# Console output goes to the container log; backend.log keeps a rotating copy.
# Every capture analysis additionally writes <capture>.analysis.log next to
# the upload, which the API exposes for troubleshooting.
LOG_DIR = Path(os.environ.get("LOG_DIR", BASE_DIR.parent / "logs"))
LOG_LEVEL = os.environ.get("LOG_LEVEL", "info").upper()
try:
LOG_DIR.mkdir(parents=True, exist_ok=True)
_FILE_LOGGING = True
except OSError:
_FILE_LOGGING = False
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"standard": {
"format": "%(asctime)s %(levelname)-7s [%(name)s] %(message)s",
"datefmt": "%Y-%m-%d %H:%M:%S",
},
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "standard",
"stream": "ext://sys.stdout",
},
**({
"file": {
"class": "logging.handlers.RotatingFileHandler",
"formatter": "standard",
"filename": str(LOG_DIR / "backend.log"),
"maxBytes": 10 * 1024 * 1024,
"backupCount": 5,
"encoding": "utf-8",
},
} if _FILE_LOGGING else {}),
},
"root": {
"handlers": ["console"] + (["file"] if _FILE_LOGGING else []),
"level": LOG_LEVEL,
},
"loggers": {
"django": {"level": "INFO", "propagate": True},
"django.request": {"level": "WARNING", "propagate": True},
"django.server": {"level": "INFO", "propagate": True},
"IoTAnalyzer": {"level": LOG_LEVEL, "propagate": True},
"analyzer": {"level": LOG_LEVEL, "propagate": True},
},
}
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
APPEND_SLASH = False