Рефакторинг и добавил апишку для управления

This commit is contained in:
2026-02-21 15:14:34 +03:00
parent d888ae7acb
commit 2d6179d366
4 changed files with 88 additions and 42 deletions

View File

@@ -1,34 +1,54 @@
#import os
#os.chdir(os.path.dirname(__file__))
# import os
# os.chdir(os.path.dirname(__file__))
import asyncio
import logging
from pathlib import Path
from config_manager import ConfigManager
import logging
import asyncio
from typing import Optional
from config_manager.v1.log_manager import LogManager
from config_manager.v2 import ManagementServerSettings
logger = logging.getLogger()
# Таймаут health: без успешного execute() дольше этого времени — unhealthy.
HEALTH_TIMEOUT = 3.0
class MyApp(ConfigManager):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.iter = 0
def execute(self) -> None:
logger.info(f"current iteration {self.iter}")
"""Успешный прогон сбрасывает таймер health (обновляет время последнего успеха)."""
logger.info("current iteration %s", self.iter)
self.iter += 1
async def main():
app = MyApp("config.yaml")
logger.info("App started")
await app.start()
logger.info("App finished")
async def main() -> None:
log_manager = LogManager()
# Один объект: и HTTP management-сервер (enabled, port), и health (health_timeout).
management_settings = ManagementServerSettings(
enabled=True,
port=8000,
health_timeout=HEALTH_TIMEOUT,
)
config_path = Path(__file__).parent / "config.yaml"
app = MyApp(
str(config_path),
log_manager=log_manager,
management_settings=management_settings,
)
logger.info("App starting (health_timeout=%s)", HEALTH_TIMEOUT)
# Менеджер запускаем в фоне (start() не возвращает управление до stop).
asyncio.create_task(app.start())
logger.info("App running; Ctrl+C to stop")
while True:
await asyncio.sleep(1)
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
asyncio.run(main())