feat: лимит конкурентных сканов через asyncio.Semaphore

- config.py: MAX_CONCURRENT_SCANS (default=4)
- harvester.py: глобальный _scan_semaphore оборачивает scan_package()
  — при N одновременных сканах, (N+1)-й будет ждать освобождения слота
  — download и SHA256 не лимитируются, только guarddog subprocess
- docker-compose.yml, .env.example: переменная добавлена
This commit is contained in:
Marker689
2026-05-10 05:52:23 +03:00
parent c4dcd79ecd
commit d23abe8b4b
5 changed files with 9 additions and 1 deletions

View File

@@ -23,6 +23,7 @@ WEBHOOK_SECRET=
SCAN_TIMEOUT_SECONDS=300
TEMP_DIR=/tmp/guarddog-nexus
GUARDDOG_BINARY=guarddog
MAX_CONCURRENT_SCANS=4
# Timeouts (seconds)
NEXUS_DOWNLOAD_TIMEOUT_SECONDS=120