Skip to main content

Middleware to handle ASGI lifespans

Project description

asgi-lifespan-middleware

ASGI middlewate to support ASGI lifespans using a simple async context manager interface.

This middleware accepts an ASGI application to wrap and an async context manager lifespan. It will run both the lifespan it was handed directly and that of the ASGI app (if the wrapped ASGI app supports lifespans).

Example (Starlette)

Starlette apps already support lifespans so we'll just be using the TestClient against a plain ASGI app that does nothing.

from contextlib import asynccontextmanager
from typing import AsyncIterator

from starlette.testclient import TestClient
from starlette.types import ASGIApp, Scope, Send, Receive

from asgi_lifespan_middleware import LifespanMiddleware

@asynccontextmanager
async def lifespan(
    # you'll get the wrapped app injected
    app: ASGIApp,
) -> AsyncIterator[None]:
    print("setup")
    yield
    print("teardown")


async def app(scope: Scope, receive: Receive, send: Send) -> None:
    ...  # do nothing


wrapped_app = LifespanMiddleware(
    app,
    lifespan=lifespan,
)

with TestClient(wrapped_app):
    pass

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asgi_lifespan_middleware-0.1.3.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

asgi_lifespan_middleware-0.1.3-py3-none-any.whl (5.0 kB view details)

Uploaded Python 3

File details

Details for the file asgi_lifespan_middleware-0.1.3.tar.gz.

File metadata

  • Download URL: asgi_lifespan_middleware-0.1.3.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.10.3 Darwin/21.6.0

File hashes

Hashes for asgi_lifespan_middleware-0.1.3.tar.gz
Algorithm Hash digest
SHA256 88adb5932e90e47f8a1ac075ce974c39e39def90b99edb43801732102ae5d132
MD5 ba3c83d4ea32e318f1adc2a63326fd59
BLAKE2b-256 af14e413ef0ed1878a6c84296dd9103653eb9a838a6196acb98d21ec52b059ce

See more details on using hashes here.

File details

Details for the file asgi_lifespan_middleware-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for asgi_lifespan_middleware-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c36734c0bc33f416621ed050c092391b89f0c312b462976d7536e2be941d780d
MD5 aab411bc11b826e56eae4428d159fdc1
BLAKE2b-256 650c8776c4453a002bf9476c5aafac520c14c5046288190ff34b58f68857138c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page