Логотип Fusion Framework от Cipher UnitFusion

Жизненный цикл приложения

Что происходит от старта процесса до FusionApp.listen

Что это

Жизненный цикл приложения — упорядоченная последовательность шагов от запуска процесса до обслуживания HTTP-трафика.

Последовательность старта

flowchart TD
  A[Process start] --> B[Import route modules]
  B --> C[Route classes register with binding]
  C --> D[load_settings_module / EnsureLoaded]
  D --> E[FusionApp constructed]
  E --> F[Optional app.use middleware]
  F --> G[listen / Listen]
  G --> H[Mount routes on Hyper]
  H --> I[Mount Swagger if enabled]
  I --> J[Accept connections]

Детали шагов

ШагЧто происходит
Import / registerPython/Node: декораторы срабатывают при импорте. C#: Route.Register<T>()
SettingsЗагрузка fusion.<env>.json (FUSION_ENV, по умолчанию dev). Python может смержить UPPERCASE-атрибуты из settings / core.settings
FusionAppХранит настройки, список middleware, native handle движка
MiddlewareГотовится глобальная цепочка (см. заметки биндинга про framework_headers)
listenБиндинг монтирует зарегистрированные маршруты, опционально маршруты Swagger, биндит host/port, блокируется на обслуживании

Поток настроек

flowchart LR
  Env[FUSION_ENV] --> File["fusion.<env>.json"]
  File --> Core[fusion-core Settings]
  Py[Python settings.py UPPERCASE] --> Core
  Core --> App[FusionApp host/port/swagger/fingerprint]

Если в JSON есть объект верхнего уровня config (стиль CLI scaffold), он мержится как настройки. Иначе мержатся ключи верхнего уровня (кроме env / commands).

Завершение работы

listen() обычно блокирует процесс до его завершения. Отдельного документированного «graceful shutdown API» у Fusion нет — только обычные сигналы процесса. Обработку OS-сигналов считайте ответственностью приложения, если только биндинг не даёт dispose/using (в C# FusionApp реализует IDisposable).

Далее

На этой странице