nvflare.app_common.abstract.launcher module

class Launcher[source]

Bases: FLComponent, ABC

Init FLComponent.

The FLComponent is the base class of all FL Components. (executors, controllers, responders, filters, aggregators, and widgets are all FLComponents)

FLComponents have the capability to handle and fire events and contain various methods for logging.

abstract check_run_status(task_name: str, fl_ctx: FLContext) str[source]

Checks the run status of Launcher.

finalize(fl_ctx: FLContext) None[source]
static get_app_dir(fl_ctx: FLContext) str[source]

Gets the deployed application directory.

initialize(fl_ctx: FLContext) None[source]
abstract launch_task(task_name: str, shareable: Shareable, fl_ctx: FLContext, abort_signal: Signal) bool[source]

Launches external system to handle a task.

Parameters:
  • task_name (str) – task name.

  • shareable (Shareable) – input shareable.

  • fl_ctx (FLContext) – fl context.

  • abort_signal (Signal) – signal to check during execution to determine whether this task is aborted.

Returns:

Whether launch success or not.

needs_deferred_stop() bool[source]

Returns True if stop_task() should be deferred to a background thread.

Deferred stop is needed when the launcher terminates the external process on each stop_task() call (launch_once=False), so the process can stay alive long enough for the server to finish downloading large tensors from it.

For launch_once=True launchers the subprocess lives for the entire job, so deferring would block the next round’s launch indefinitely — return False.

abstract stop_task(task_name: str, fl_ctx: FLContext, abort_signal: Signal) None[source]

Stops external system and free up resources.

Parameters:
  • task_name (str) – task name.

  • fl_ctx (FLContext) – fl context.

Note

Implementations must be idempotent and thread-safe. LauncherExecutor may call stop_task() from a deferred background thread and, in extreme timeout scenarios, concurrently from the main task thread as a fallback. A second concurrent or sequential call must be a safe no-op (e.g. guard on a null process reference inside a lock, as SubprocessLauncher does).

class LauncherRunStatus[source]

Bases: object

COMPLETE_FAILED = 'failed'
COMPLETE_SUCCESS = 'success'
NOT_RUNNING = 'not_running'
RUNNING = 'running'