python-betterproto icon indicating copy to clipboard operation
python-betterproto copied to clipboard

ContextManager for stream-unary endpoints

Open betaboon opened this issue 3 years ago • 0 comments

It would be nice if we could interact with a stream-unary endpoint by using a context-manager.

currently the only way to send messages to a stream-unary endpoint is by using an async-generator:

async def request_iterator():
    yield create_some_request()
    yield create_some_request()

channel = Channel(host="localhost", port=1234)
stub = MyStub(channel)
response = await stub.my_endpoint(request_iterator())

what i imagine is something like this:

channel = Channel(host="localhost", port=1234)
stub = MyStub(channel)
async with stub.my_endpoint as stream:
    stream.write(create_some_request())
    stream.write(create_some_request())

Open questions:

  • how should the interface for receiving the response look?
  • could this be used for stream-stream endpoints as well?

betaboon avatar Jan 28 '22 09:01 betaboon