HTTP
Mangum provides support for the following AWS HTTP Lambda Event Source:
- API Gateway (Event Examples)
- HTTP Gateway (Event Examples)
- Application Load Balancer (ALB) (Event Examples)
- CloudFront Lambda@Edge (Event Examples)
from fastapi import FastAPI
from fastapi.middleware.gzip import GZipMiddleware
from mangum import Mangum
app = FastAPI()
app.add_middleware(GZipMiddleware, minimum_size=1000)
@app.get("/")
async def main():
return "somebigcontent"
handler = Mangum(app, TEXT_MIME_TYPES=["application/vnd.some.type"])
Configuring binary responses
Binary responses are determined using the Content-Type
and Content-Encoding
headers from the event request and a list of text MIME types.
Text MIME types
By default, all response data will be base64 encoded and include isBase64Encoded=True
in the response except the following MIME types:
application/json
application/javascript
application/xml
application/vnd.api+json
application/vnd.oai.openapi
Additionally, any Content-Type
header prefixed with text/
is automatically excluded.
Compression
If the Content-Encoding
header is set to gzip
or br
, then a binary response will be returned regardless of MIME type.
State machine
The HTTPCycle
is used by the adapter to communicate message events between the application and AWS. It is a state machine that handles the entire ASGI request and response cycle.
HTTPCycle
mangum.protocols.http.HTTPCycle
(scope, body)run
(self, app)receive
(self)send
(self, message)HTTPCycleState
mangum.protocols.http.HTTPCycleState
(*values)The state of the ASGI http
connection.
* REQUEST - Initial state. The ASGI application instance will be run with the
connection scope containing the http
type.
* RESPONSE - The http.response.start
event has been sent by the application.
The next expected message is the http.response.body
event, containing the body
content. An application may pass the more_body
argument to send content in chunks,
however content will always be returned in a single response, never streamed.
* COMPLETE - The body content from the ASGI application has been completely
read. A disconnect event will be sent to the application, and the response will
be returned.