Skip to content

xnano.server.requests

xnano.server.requests

xnano.server.requests


Serve @on_*_request hooks with the standard library HTTP server.

Classes:

Functions:

RequestServer

RequestServer(
    address: tuple[str, int],
    grid: Any,
    *,
    runtime: Any | None = None
)

Bases: ThreadingHTTPServer

Serve request hooks declared by one grid.

Attributes:

  • grid

    Grid instance whose request hooks are served.

  • runtime

    Runtime exposed to request hook contexts, if supplied.

Example

server = RequestServer(("127.0.0.1", 0), object()) server.server_address[1] > 0 True server.server_close()

Source code in xnano/server/requests.py
def __init__(
    self,
    address: tuple[str, int],
    grid: Any,
    *,
    runtime: Any | None = None,
) -> None:
    self.grid = grid() if isinstance(grid, type) else grid
    self.runtime = runtime if runtime is not None else self.grid
    super().__init__(address, _RequestHandler)

start_request_server

start_request_server(
    grid: Any,
    *,
    host: str = "127.0.0.1",
    port: int = 8000,
    runtime: Any | None = None
) -> RequestServer

Start request-hook serving on a daemon thread.

Parameters:

  • grid (Any) –

    Grid instance or class declaring request hooks.

  • host (str, default: '127.0.0.1' ) –

    Bind address.

  • port (int, default: 8000 ) –

    Bind port. Use 0 to select a free port.

  • runtime (Any | None, default: None ) –

    Runtime exposed to request-hook contexts.

Returns:

  • RequestServer

    Running server. Call shutdown and server_close to stop it.

Source code in xnano/server/requests.py
def start_request_server(
    grid: Any,
    *,
    host: str = "127.0.0.1",
    port: int = 8000,
    runtime: Any | None = None,
) -> RequestServer:
    """Start request-hook serving on a daemon thread.

    Args:
        grid: Grid instance or class declaring request hooks.
        host: Bind address.
        port: Bind port. Use ``0`` to select a free port.
        runtime: Runtime exposed to request-hook contexts.

    Returns:
        Running server. Call ``shutdown`` and ``server_close`` to stop it.
    """
    server = RequestServer((host, port), grid, runtime=runtime)
    threading.Thread(target=server.serve_forever, daemon=True).start()
    return server