Skip to main content

AWS Lambda & API Gateway support for ASGI

Project description

Mangum

Package version Build Status

Mangum is an adapter for using ASGI applications with AWS Lambda & API Gateway. It also provies an experimental CLI for handling deployments. This project may face periods of inactivity from time to time, but PRs are welcomed.

Documentation: https://erm.github.io/mangum

Requirements

Python 3.7+

Installation

pip3 install mangum[full]

Usage

The adapter class Mangum accepts the following optional arguments:

  • debug : bool (default=False)

    Enable a simple error response if an unhandled exception is raised in the adapter.

  • spec_version : int (default=3)

    Set the ASGI specification version. ASGI 3 uses a single-callable, ASGI 2 uses a double-callable.

  • enable_lifespan : bool (default=True)

    Specify whether or not to enable lifespan support.

Example

from mangum import Mangum

async def app(scope, receive, send):
    await send(
        {
            "type": "http.response.start",
            "status": 200,
            "headers": [[b"content-type", b"text/plain; charset=utf-8"]],
        }
    )
    await send({"type": "http.response.body", "body": b"Hello, world!"})


handler = Mangum(app, enable_lifespan=False) # disable lifespan for raw ASGI example

Frameworks

Any ASGI framework should work with Mangum, however there are cases where certain non-ASGI behaviour of an application will cause issues when deploying to a serverless platform. You may also need to specify spec_version=2 for frameworks that do not support the latest ASGI version.

Project details


Download files

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

Source Distribution

mangum-0.6.13.tar.gz (8.6 kB view hashes)

Uploaded Source

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