view.py icon indicating copy to clipboard operation
view.py copied to clipboard

Defer ASGI

Open ZeroIntensity opened this issue 1 year ago • 1 comments

Feature description

For compatibility with ASGI toolkits like Starlette, view.py should make it possible to defer the ASGI scope, receive, and send. This will allow someone to for example, mount an existing Starlette app against a view.py server, which very much aligns with batteries-detachable.

Feature example API

from starlette.responses import PlainTextResponse
from view import new_app

app = new_app()

@app.defer("/prefix")
async def starlette_app(scope, receive, send):
    assert scope['type'] == 'http'
    response = PlainTextResponse('Hello, world!')
    await response(scope, receive, send)

app.run()

Anything else?

This will be waiting on #82, as prefixing will require path parameters.

ZeroIntensity avatar Feb 05 '24 13:02 ZeroIntensity

Maybe this could some with some WSGI hook utility as well? I don't know that much about WSGI, but theoretically it should be possible to convert ASGI objects into their WSGI counterparts. This would be incredibly useful for say, mounting a Django app on top of a view.py app.

ZeroIntensity avatar May 15 '24 15:05 ZeroIntensity