prefect.server.api.server

Defines the Prefect REST API FastAPI app.

Functions

is_client_retryable_exception

is_client_retryable_exception(exc: Exception) -> bool

replace_placeholder_string_in_files

replace_placeholder_string_in_files(directory: str, placeholder: str, replacement: str, allowed_extensions: list[str] | None = None) -> None

Recursively loops through all files in the given directory and replaces a placeholder string.

copy_directory

copy_directory(directory: str, path: str) -> None

create_api_app

create_api_app(dependencies: list[Any] | None = None, health_check_path: str = '/health', version_check_path: str = '/version', fast_api_app_kwargs: dict[str, Any] | None = None, final: bool = False, ignore_cache: bool = False) -> FastAPI

Create a FastAPI app that includes the Prefect REST API

Args:

  • dependencies: a list of global dependencies to add to each Prefect REST API router
  • health_check_path: the health check route path
  • fast_api_app_kwargs: kwargs to pass to the FastAPI constructor
  • final: whether this will be the last instance of the Prefect server to be created in this process, so that additional optimizations may be applied
  • ignore_cache: if set, a new app will be created even if the settings and fast_api_app_kwargs match an existing app in the cache

Returns:

  • a FastAPI app that serves the Prefect REST API

create_ui_app

create_ui_app(ephemeral: bool) -> FastAPI

create_app

create_app(settings: Optional[prefect.settings.Settings] = None, ephemeral: bool = False, webserver_only: bool = False, final: bool = False, ignore_cache: bool = False) -> FastAPI

Create a FastAPI app that includes the Prefect REST API and UI

Args:

  • settings: The settings to use to create the app. If not set, settings are pulled from the context.
  • ephemeral: If set, the application will be treated as ephemeral. The UI and services will be disabled.
  • webserver_only: If set, the webserver and UI will be available but all background services will be disabled.
  • final: whether this will be the last instance of the Prefect server to be created in this process, so that additional optimizations may be applied
  • ignore_cache: If set, a new application will be created even if the settings match. Otherwise, an application is returned from the cache.

Classes

SPAStaticFiles

Implementation of StaticFiles for serving single page applications.

Adds get_response handling to ensure that when a resource isn’t found the application still returns the index.

RequestLimitMiddleware

A middleware that limits the number of concurrent requests handled by the API.

This is a blunt tool for limiting SQLite concurrent writes which will cause failures at high volume. Ideally, we would only apply the limit to routes that perform writes.

SubprocessASGIServer

Methods:

find_available_port

find_available_port(self) -> int

is_port_available

is_port_available(port: int) -> bool

address

address(self) -> str

api_url

api_url(self) -> str

start

start(self, timeout: Optional[int] = None) -> None

Start the server in a separate process. Safe to call multiple times; only starts the server once.

Args:

  • timeout: The maximum time to wait for the server to start

stop

stop(self) -> None