pyfuse3
pyfuse3 copied to clipboard
Handler exceptions silently vanish in asyncio
I'm new to pyfuse3, and am learning it.
When using trio, if a handler function (e.g. readdir()) throws an exception, the exception is raised globally, and the app crashes. To me, this is an expected behaviour.
However, when using asyncio, the exception vanishes -- nothing is printed in the terminal. This is unexpected.
Is there an argument / option that controls this behaviour? How can I make the exception visible to me during development at least?
I saw #82, but am not sure if that is talking about the same topic. In particular, I would agree that an exception should not crash the app (configurable through argument), but should be visible. Silently snoozing it is not a good idea.
#86 is what we ended up with, based on a branch created by @Nikratio .
Thanks for the response @ThomasWaldmann . However, as I'm not familiar with Cython, I'm not sure what that change implies?
In particular, is it the reason for different behaviours when using asyncio and trio?
No idea about the different behaviour.
The changes above should not affect trio vs asyncio.
I believe the reason for the different behavior is the implementation of _Nursery.__aexit__ in pyfuse3_asyncio.py. Patches welcome :-).
..but I am not an asyncio user, so it's also possible that the reason lies within asyncio itself.