Le mercredi 1 mars 2017 09:25:48 UTC-5, Frank Millman a écrit : > "Frank Millman" wrote in message news:o93vs2$smi$1...@blaine.gmane.org...
SNIP > > If you run this as is, it works. > > I added '1/0' at various points, to force an exception. > > If I put it in main() or in aenum(), I do not get the full traceback. > > If I put it in aenumerate() or in gen(), I do get the traceback. > Hi, I ran your snippet, using 3.6 under Linux, and get the correct (imo) full traceback in all cases : ZeroDivisionError Traceback (most recent call last) <ipython-input-4-2068e4a933e4> in <module>() 25 26 loop = asyncio.get_event_loop() ---> 27 loop.run_until_complete(main()) /opt/softs/python/3.6/lib/python3.6/asyncio/base_events.py in run_until_complete(self, future) 464 raise RuntimeError('Event loop stopped before Future completed.') 465 --> 466 return future.result() 467 468 def stop(self): <ipython-input-4-2068e4a933e4> in main() 22 23 async def main(): ---> 24 await aenum() 25 26 loop = asyncio.get_event_loop() <ipython-input-4-2068e4a933e4> in aenum() 14 15 async def aenum(): ---> 16 1/0 17 g = gen(5) 18 async for a, x in aenumerate(g): ZeroDivisionError: division by zero In [5]: BUT ! There is one time where I got a RuntimeError, and it's with 1/0 placed inside aenumerate() (after the yield) : In [8]: ...: import asyncio ...: from itertools import count ...: ...: async def aenumerate(aiterable): ...: counter = count() ...: async for x in aiterable: ...: yield next(counter), x ...: await asyncio.sleep(0.5) ...: 1/0 ...: ...: async def gen(n): ...: for i in range(100, 100+n): ...: yield i ...: ...: async def aenum(): ...: g = gen(5) ...: async for a, x in aenumerate(g): ...: print(a, x) ...: print('done') ...: ...: async def main(): ...: ...: await aenum() ...: ...: loop = asyncio.get_event_loop() ...: loop.run_until_complete(main()) ...: 0 100 --------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) <ipython-input-8-0132c3d8fdfa> in <module>() 25 26 loop = asyncio.get_event_loop() ---> 27 loop.run_until_complete(main()) /opt/softs/python/3.6/lib/python3.6/asyncio/base_events.py in run_until_complete(self, future) 462 future.remove_done_callback(_run_until_complete_cb) 463 if not future.done(): --> 464 raise RuntimeError('Event loop stopped before Future completed.') 465 466 return future.result() RuntimeError: Event loop stopped before Future completed. In [9]: I tried reproducing it but couldn't. Other trials now always show the full traceback up to the 1/0 expression. Not sure this helps you though.. -- https://mail.python.org/mailman/listinfo/python-list