/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.2.0
app_service.py
70 строк
3 KB
User
ci: настроен Black и flake8 для автоматического форматирования кода
04 июл 2026, 08:14
04 июл 2026, 08:14
4778ed6
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Сервисное приложение LiquidCode. Инициализирует Application, загружает конфигурацию, регистрирует контроллеры и возвращает экземпляр приложения для использования в фоновых задачах, консольных командах или тестах. """ import logging from liquidcode import Application, __version__ from liquidcode.test import TestClient # Не настраиваем logging.basicConfig здесь, так как Application сам настроит # логирование в зависимости от debug в конфиге. CONFIG_PATH = "config/config.yaml" def create_app() -> Application: """ Создаёт и настраивает экземпляр приложения. Returns: Application: Готовое к использованию приложение. """ app = Application() try: app.load_config(CONFIG_PATH) except FileNotFoundError: logging.warning( f"Конфигурационный файл {CONFIG_PATH} не найден. Используются настройки по умолчанию." ) except Exception as e: logging.error(f"Ошибка загрузки конфигурации: {e}") # Автоматически регистрируем контроллеры app.discover_controllers() return app # Глобальный экземпляр для простого импорта app = create_app() if __name__ == "__main__": # Если файл запущен напрямую — можно вывести информацию о приложении print(f"Приложение инициализировано. Версия: {__version__}") routes = app.router.all_routes() print(f"Зарегистрировано маршрутов: {len(routes)}") for route in routes[:5]: print(f" {route['methods']} {route['path']} → {route['controller']}") # Демонстрация работы ErrorHandlingMiddleware с TestClient client = TestClient(app) # 404 как JSON (Accept: application/json) print("\n--- 404 как JSON ---") response = client.get("/nonexistent", headers={}) print(f"Статус: {response.status}") print(f"Тело: {response.json()}") # 404 как HTML (Accept: text/html) print("\n--- 404 как HTML ---") response = client.get("/nonexistent", headers={"Accept": "text/html"}) print(f"Статус: {response.status}") html_body = response.text() print(f"Длина HTML: {len(html_body)} символов") print(f"Первые 500 символов:\n{html_body[:500]}")