Isolate scan prewarm to web service
This commit is contained in:
@@ -28,6 +28,8 @@ services:
|
||||
env_file: &id001
|
||||
- .env
|
||||
environment:
|
||||
POLYWEATHER_SCAN_TERMINAL_PREWARM_ENABLED: 'false'
|
||||
POLYWEATHER_SERVICE_ROLE: bot
|
||||
TELEGRAM_AIRPORT_PUSH_INTERVAL_SEC: ${POLYWEATHER_BOT_AIRPORT_PUSH_INTERVAL_SEC:-180}
|
||||
TELEGRAM_AIRPORT_PUSH_MAX_WORKERS: ${POLYWEATHER_BOT_AIRPORT_PUSH_MAX_WORKERS:-1}
|
||||
healthcheck:
|
||||
@@ -93,6 +95,8 @@ services:
|
||||
max-file: "3"
|
||||
container_name: polyweather_web
|
||||
env_file: *id001
|
||||
environment:
|
||||
POLYWEATHER_SERVICE_ROLE: web
|
||||
healthcheck:
|
||||
interval: 30s
|
||||
retries: 3
|
||||
|
||||
@@ -38,6 +38,28 @@ def test_scan_terminal_prewarm_is_lazy_by_default():
|
||||
)
|
||||
|
||||
|
||||
def test_scan_terminal_prewarm_only_runs_for_web_service(monkeypatch):
|
||||
from web import app_factory
|
||||
|
||||
monkeypatch.setenv("POLYWEATHER_SCAN_TERMINAL_PREWARM_ENABLED", "true")
|
||||
monkeypatch.delenv("POLYWEATHER_SERVICE_ROLE", raising=False)
|
||||
assert app_factory._scan_terminal_prewarm_enabled() is False
|
||||
|
||||
monkeypatch.setenv("POLYWEATHER_SERVICE_ROLE", "bot")
|
||||
assert app_factory._scan_terminal_prewarm_enabled() is False
|
||||
|
||||
monkeypatch.setenv("POLYWEATHER_SERVICE_ROLE", "web")
|
||||
assert app_factory._scan_terminal_prewarm_enabled() is True
|
||||
|
||||
|
||||
def test_docker_compose_isolates_scan_terminal_prewarm_to_web_service():
|
||||
compose = (ROOT / "docker-compose.yml").read_text(encoding="utf-8")
|
||||
|
||||
assert "POLYWEATHER_SERVICE_ROLE: web" in compose
|
||||
assert "POLYWEATHER_SERVICE_ROLE: bot" in compose
|
||||
assert "POLYWEATHER_SCAN_TERMINAL_PREWARM_ENABLED: 'false'" in compose
|
||||
|
||||
|
||||
def test_scan_terminal_backend_timeout_returns_before_next_proxy_abort():
|
||||
import web.services.scan_terminal_config as scan_terminal_config
|
||||
|
||||
|
||||
+6
-1
@@ -24,10 +24,15 @@ from web.scan_terminal_service import start_scan_terminal_prewarm
|
||||
_ROUTES_REGISTERED_FLAG = "_polyweather_routes_registered"
|
||||
|
||||
|
||||
def _service_role() -> str:
|
||||
return str(os.getenv("POLYWEATHER_SERVICE_ROLE") or "").strip().lower()
|
||||
|
||||
|
||||
def _scan_terminal_prewarm_enabled() -> bool:
|
||||
return str(
|
||||
enabled = str(
|
||||
os.getenv("POLYWEATHER_SCAN_TERMINAL_PREWARM_ENABLED") or "false"
|
||||
).strip().lower() in {"1", "true", "yes", "on"}
|
||||
return enabled and _service_role() in {"web", "api", "backend"}
|
||||
|
||||
|
||||
def create_app() -> FastAPI:
|
||||
|
||||
Reference in New Issue
Block a user