Gateway

The Gateway serves as the factory for HandlerChain instances. It also serves as the interface to HTTP servers.

Creating a Gateway

from rolo.gateway import Gateway

gateway = Gateway(
    request_handlers=[
        ...
    ],
    response_handlers=[
        ...
    ],
    exception_handlers=[
        ...
    ],
    finalizers=[
        ...
    ]
)

Protocol adapters

You can use rolo.gateway.wsgi or rolo.gateway.asgi to expose a Gateway as either a WSGI or ASGI app.

Read more in the serving section.

Custom RequestContext

You can add a custom request context with type hints or your own methods by setting the context_class parameter in the constructor. First, define a request context subclass:

from rolo.gateway import RequestContext

class MyContext(RequestContext):
    myattr: str

Then, when you instantiate the Gateway:

gateway = Gateway(
    request_handlers=[
        ...
    ],
    context_class=MyContext
)

In your handlers, you can now reference your context:

def handler(chain: HandlerChain, context: MyContext, response: Response):
    ...