# Serve WSGI applications

Hypercorn directly serves WSGI applications:

    $ hypercorn module:wsgi_app

## WSGI Middleware

If a WSGI application is being combined with ASGI middleware it is best to use either `AsyncioWSGIMiddleware` or `TrioWSGIMiddleware` middleware. To do so simply wrap the WSGI app with the appropriate middleware for the hypercorn worker,

    from hypercorn.middleware import AsyncioWSGIMiddleware, TrioWSGIMiddleware

    asyncio_app = AsyncioWSGIMiddleware(wsgi_app)
    trio_app = TrioWSGIMiddleware(wsgi_app)

which can then be passed to other middleware served by hypercorn,

## Limiting the request body size

As the request body is stored in memory before being processed it is important to limit the max size. This is configured by the `wsgi_max_body_size` configuration attribute.

When using middleware the `AsyncioWSGIMiddleware` and `TrioWSGIMiddleware` have a default max size that can be configured,

    app = AsyncioWSGIMiddleware(wsgi_app, max_body_size=20)  # Bytes