"Frank Millman"  wrote in message news:o93vs2$smi$1...@blaine.gmane.org...

I use asyncio in my project, so most of my functions start with 'async' and
most of my calls are preceded by 'await'.

If an exception is raised, I usually get the full traceback, but sometimes I
just get something like the following -

Traceback (most recent call last):
  File "C:\Users\User\aib\aib\test_data.py", line 645, in <module>
    loop.run_until_complete(main(company))
File "C:\Users\User\AppData\Local\Programs\Python\Python36\lib\asyncio\base_events.py", line 466, in run_until_complete
    return future.result()
ValueError: not enough values to unpack (expected 2, got 1)

It does not show the line where the ValueError occurs, and I have not managed to narrow down exactly when this happens.


I have narrowed it down a bit.

Here is a fairly simple example, based on some code I had lying around -

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)

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())

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.

I hope this enables someone cleverer than me to figure out what is going on.

Frank


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to