FireX Flame

Flame is a lightweight server that collects, serves, and presents data from a FireX execution. It receives events from the FireX backend and aggregates them into the Flame data model, which is available through REST and Socket.IO APIs. Flame also serves the Flame UI for viewing a single execution.

The Flame server is typically ephemeral. A FireX execution launches its own server, which remains available after the workflow completes and terminates automatically after its configured timeout.

The server and UI are distributed as part of firexapp while retaining the firex_flame and firex_flame_ui import namespaces, firex_flame command, and Flame tracking-service entry point. Frontend source and tests live in firex_flame_ui_frontend; its production build populates the firex_flame_ui resource package included in the FireXApp artifact.

API Reference

Flask API module for interacting with celery tasks.

class firex_flame.controller.QueueItemType(value)[source]

An enumeration.

class firex_flame.controller.RunningModelDumper(flame_controller: FlameAppController)[source]

Maintains a queue and a greenlet for async writing the flame data model. Having a dedicated greenlet prevents writing the model to disk from blocking the main celery event receiver.

Process events from Celery in to flame data model.

class firex_flame.event_broker_processor.BrokerEventConsumerThread(celery_app, flame_controller: FlameAppController, config: BrokerConsumerConfig, recording_file: str, shutdown_handler)[source]

Events threading class

run()[source]

Listen for events from celery

class firex_flame.flame_helper.FlameServerConfig(webapp_port: int, serve_logs_dir: bool, recording_file: str | None, extra_task_dump_paths: list[str], authed_user_request_path: list[str])[source]
exception firex_flame.flame_helper.PathNotFoundException[source]
class firex_flame.flame_task_graph.FlameEventAggregator(tasks_by_uuid, model_dumper: FlameModelDumper | None = None)[source]

Aggregates many events in to the task data model.

generate_incomplete_events()[source]

Unfortunately, if a run terminates ungracefully, incomplete tasks will never arrive at a terminal runstate. The ‘task-incomplete’ runstate is a fake (non-Celery) terminal runstate that is generated here so that the UI can show a non-incomplete runstate. :return:

class firex_flame.launcher.FlameLauncher[source]
class firex_flame.web_app.FlameResponse(response, **kwargs)[source]