If errors are raised in the new async code, as I'm seeing in trying to update IPython Parallel to the new async APIs, there is often no indication of a problem, messages just don't get handled.
We need to be careful to catch and log all errors in ipykernel code, because the default excepthook sends them to the captured stderr stream, which won't be seen in the kernel logs. That means everything we launch with e.g. start_soon etc. must be hooked up to a generic try/except to catch and log all unhandled exceptions instead of letting them raise.
If errors are raised in the new async code, as I'm seeing in trying to update IPython Parallel to the new async APIs, there is often no indication of a problem, messages just don't get handled.
We need to be careful to catch and log all errors in ipykernel code, because the default excepthook sends them to the captured stderr stream, which won't be seen in the kernel logs. That means everything we launch with e.g.
start_soon
etc. must be hooked up to a generic try/except to catch and log all unhandled exceptions instead of letting them raise.