Hi @davidbrochart!
It turns out that akernel actually solves the issue with the widget we are building. We can use await to call async methods on our widget and the akernel isn't blocked unlike the default one:

Do you think there is a chance of these changes being accepted into the default ipykernel?
Our widget calls self.send(msg) without passing buffers and we are hitting this error:

It works just fine if we use self.send(msg, buffers=[]) instead, but I think akernel should also handle buffers=None.
Actually, send_message in akernel has a mutable default list argument for buffers which is problematic. It should probably just have a check if buffers to is not None instead
Hi @davidbrochart!
It turns out that akernel actually solves the issue with the widget we are building. We can use
awaitto call async methods on our widget and the akernel isn't blocked unlike the default one:Do you think there is a chance of these changes being accepted into the default ipykernel?
Our widget calls

self.send(msg)without passingbuffersand we are hitting this error:It works just fine if we use
self.send(msg, buffers=[])instead, but I think akernel should also handlebuffers=None.Actually,
send_messagein akernel has a mutable default list argument forbufferswhich is problematic. It should probably just have a checkif buffers to is not Noneinstead