By the way, since we're already on the subject of asyncio tasks and (truncated) stack traces, this looks like a good opportunity to ask a question that's been on my mind for a while:
There's a mysterious note at the end of the documentation of asyncio.Task's get_stack() method, where it says-- > For reasons beyond our control, only one stack frame is returned for a > suspended coroutine. (https://docs.python.org/3/library/asyncio-task.html#asyncio.Task.get_stack ) What does the "For reasons beyond our control" mean? What is it that can possibly be beyond the control of Python? --Chris On Sat, Nov 11, 2017 at 1:47 AM, Chris Jerdonek <chris.jerdo...@gmail.com> wrote: > On Sat, Nov 11, 2017 at 12:39 AM, Nathaniel Smith <n...@pobox.com> wrote: >> On Fri, Nov 10, 2017 at 9:52 PM, Chris Jerdonek >> <chris.jerdo...@gmail.com> wrote: >>> Hi, I recently encountered a situation with asyncio where the stack >>> trace is getting truncated: an exception isn't getting chained as >>> expected. >>> >>> I was able to reduce it down to the code below. >>> >>> The reduced case seems like a pattern that can come up a lot, and I >>> wasn't able to find an issue on the CPython tracker, so I'm wondering >>> if I'm doing something wrong or if the behavior is deliberate. >> >> I think what you're seeing is collateral damage from some known >> bugginess in the generator/coroutine .throw() method: >> https://bugs.python.org/issue29587 > > Ah, thanks for the great explanation, Nathaniel! > > From the original bug report Nathaniel filed above: >> It's likely that more people will run into this in the future as async/await >> becomes more widely used. ... > > :) > > --Chris _______________________________________________ Async-sig mailing list Async-sig@python.org https://mail.python.org/mailman/listinfo/async-sig Code of Conduct: https://www.python.org/psf/codeofconduct/