triopg icon indicating copy to clipboard operation
triopg copied to clipboard

New listen helper with backpressure using new asyncpg add_listener api from v0.24

Open andersea opened this issue 3 years ago • 0 comments

I originally came up with the listen helper for my personal code and I am very happy to see it implemented directly in triopg.

Now in asyncpg v0.24 add_listener now allows the callback to a coroutine. This allows the posibility of another message passing strategy where backpressure is allowed.

The callback function could concievably be as simple as:

async def _listen_callback(c, pid, chan, payload):
        await trio_asyncio.trio_as_aio(send_channel.send)(payload)

The wrapper is necessary, since the callback is running in asyncio, and MemorySendChannel.send does stuff with trio.lowlevel.current_task().

What do you think?

andersea avatar Nov 18 '21 12:11 andersea