ServerApp

class ServerApp(server: Server | None = None, config: ServerConfig | None = None, strategy: Strategy | None = None, client_manager: ClientManager | None = None, server_fn: Callable[[Context], ServerAppComponents] | None = None)[source]

Bases : object

Application Flower ServerApp.

Exemples

Utilisez le ServerApp avec un existing Strategy:

def server_fn(context: Context):
    server_config = ServerConfig(num_rounds=3)
    strategy = FedAvg()
    return ServerAppComponents(
        strategy=strategy,
        server_config=server_config,
    )

app = ServerApp(server_fn=server_fn)

Utilisez le ServerApp avec une fonction principale personnalisée:

app = ServerApp()

@app.main()
def main(grid: Grid, context: Context) -> None:
   print("ServerApp running")

Methods

lifespan()

Retournez un décorateur qui enregistre la fonction lifespan avec l'application serveur.

main()

Retournez un décorateur qui enregistre la fonction main avec l'application serveur.

lifespan() Callable[[Callable[[Context], Iterator[None]]], Callable[[Context], Iterator[None]]][source]

Retournez un décorateur qui enregistre la fonction lifespan avec l’application serveur.

La fonction décorée doit accepter un objet Context et utiliser yield pour définir le comportement d’entrée et de sortie.

Exemples

app = ServerApp()

@app.lifespan()
def lifespan(context: Context) -> None:
    # Perform initialization tasks before the app starts
    print("Initializing ServerApp")

    yield  # ServerApp is running

    # Perform cleanup tasks after the app stops
    print("Cleaning up ServerApp")
main() Callable[[Callable[[Grid, Context], None]], Callable[[Grid, Context], None]][source]

Retournez un décorateur qui enregistre la fonction main avec l’application serveur.

Exemples

app = ServerApp()

@app.main()
def main(grid: Grid, context: Context) -> None:
    print("ServerApp running")