Большой рефакторинг с кодекс
This commit is contained in:
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "config_manager"
|
name = "config_manager"
|
||||||
version = "2.2.0"
|
version = "2.2.1"
|
||||||
description = "Большой рефакторинг"
|
description = "Большой рефакторинг, логирование"
|
||||||
authors = [
|
authors = [
|
||||||
{ name = "Aleksei Zosimov", email = "lesha.spb@gmail.com" }
|
{ name = "Aleksei Zosimov", email = "lesha.spb@gmail.com" }
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -89,6 +89,26 @@ class _RuntimeController:
|
|||||||
timed_out_count,
|
timed_out_count,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def _log_health_status_transition(self) -> None:
|
||||||
|
try:
|
||||||
|
health = await self._health_aggregator.collect()
|
||||||
|
except Exception: # noqa: BLE001
|
||||||
|
self.logger.exception("ConfigManagerV2._log_health_status_transition error")
|
||||||
|
return
|
||||||
|
status = health.get("status", "unhealthy")
|
||||||
|
if self._last_health_status == status:
|
||||||
|
return
|
||||||
|
previous = self._last_health_status or "unknown"
|
||||||
|
detail = health.get("detail", "")
|
||||||
|
self._last_health_status = status
|
||||||
|
self.logger.warning(
|
||||||
|
"ConfigManagerV2 health status changed: %s -> %s (state=%s detail=%s)",
|
||||||
|
previous,
|
||||||
|
status,
|
||||||
|
self._state.value,
|
||||||
|
detail,
|
||||||
|
)
|
||||||
|
|
||||||
async def _worker_loop(self) -> None:
|
async def _worker_loop(self) -> None:
|
||||||
self.logger.warning(
|
self.logger.warning(
|
||||||
"ConfigManagerV2._worker_loop result: started work_interval=%s",
|
"ConfigManagerV2._worker_loop result: started work_interval=%s",
|
||||||
@@ -118,6 +138,7 @@ class _RuntimeController:
|
|||||||
try:
|
try:
|
||||||
while not self._halt.is_set():
|
while not self._halt.is_set():
|
||||||
await self._update_config()
|
await self._update_config()
|
||||||
|
await self._log_health_status_transition()
|
||||||
try:
|
try:
|
||||||
await asyncio.wait_for(self._halt.wait(), timeout=max(self.update_interval, 0.05))
|
await asyncio.wait_for(self._halt.wait(), timeout=max(self.update_interval, 0.05))
|
||||||
except asyncio.TimeoutError:
|
except asyncio.TimeoutError:
|
||||||
@@ -259,6 +280,7 @@ class _RuntimeController:
|
|||||||
await self._update_config()
|
await self._update_config()
|
||||||
await self._start_control_channels()
|
await self._start_control_channels()
|
||||||
await self._start_runtime()
|
await self._start_runtime()
|
||||||
|
await self._log_health_status_transition()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
await self._shutdown.wait()
|
await self._shutdown.wait()
|
||||||
@@ -320,6 +342,7 @@ class ConfigManagerV2(_RuntimeController):
|
|||||||
self._worker_degraded = False
|
self._worker_degraded = False
|
||||||
self._worker_inflight_count = 0
|
self._worker_inflight_count = 0
|
||||||
self._worker_timed_out_inflight_count = 0
|
self._worker_timed_out_inflight_count = 0
|
||||||
|
self._last_health_status: Optional[str] = None
|
||||||
|
|
||||||
initial_config = self._loader.load_sync()
|
initial_config = self._loader.load_sync()
|
||||||
self.config = initial_config
|
self.config = initial_config
|
||||||
@@ -373,7 +396,7 @@ class ConfigManagerV2(_RuntimeController):
|
|||||||
self.logger.debug("ConfigManagerV2._update_config result: no changes")
|
self.logger.debug("ConfigManagerV2._update_config result: no changes")
|
||||||
return
|
return
|
||||||
self._apply_config(new_config)
|
self._apply_config(new_config)
|
||||||
self.logger.debug("ConfigManagerV2._update_config result: config updated")
|
self.logger.warning("ConfigManagerV2._update_config result: config updated and applied")
|
||||||
except Exception as exc: # noqa: BLE001
|
except Exception as exc: # noqa: BLE001
|
||||||
self.logger.exception("ConfigManagerV2._update_config error")
|
self.logger.exception("ConfigManagerV2._update_config error")
|
||||||
if self._loader.last_valid_config is None:
|
if self._loader.last_valid_config is None:
|
||||||
@@ -384,7 +407,7 @@ class ConfigManagerV2(_RuntimeController):
|
|||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
self._apply_config(self._loader.last_valid_config)
|
self._apply_config(self._loader.last_valid_config)
|
||||||
self.logger.debug(
|
self.logger.warning(
|
||||||
"ConfigManagerV2._update_config result: fallback to last valid config applied",
|
"ConfigManagerV2._update_config result: fallback to last valid config applied",
|
||||||
)
|
)
|
||||||
except Exception: # noqa: BLE001
|
except Exception: # noqa: BLE001
|
||||||
|
|||||||
Reference in New Issue
Block a user