git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Asynchronous generators


I know of a URL that explains asyncio:
https://hackernoon.com/a-simple-introduction-to-pythons-asyncio-595d9c9ecf8c.
As to your specific problem, I can't help and don't know if the URL helps.
I haven't studied asyncio much.

On Tue, Jun 23, 2020 at 3:53 PM Jonathan Gossage <jgossage at gmail.com> wrote:

> --
> I am attempting to learn how to use asyncio and I have been unable to find
> any documentation or Internet posts that give information on the principles
> underlying asyncio, let alone any examples showing how asynchronous
> generators should be used. I have built a toy program to test trying to
> read a text file, line by line, and process each line asynchronously. I
> wind up with a message complaining that my asynchronous generator is not a
> coroutine. I am posting a copy of my program here along with the results
> from trying to run it. I am hoping for some suggestions about how to fix
> it.  I am using Python 3.8.3 on Ubuntu 20.04
>
> import asyncio
> > from pathlib import Path
> > import timeit
> >
> > async def _read_password() -> str:
> >     with Path('/etc/passwd').open() as f:
> >         line: str = f.readline()
> >         yield line
> >     print('read_password has read everything')
> >
> > async def main(_rp) -> int:
> >     line = ''
> >     async for line in _rp:
> >         try:
> >             print(f'Got line {line}')
> >         except StopAsyncIteration:
> >             line = None
> >     _rp.aclose()
> >     return 0
> >
> > if __name__ == '__main__':
> >     _loop = asyncio.get_event_loop()
> >     _rp = _read_password()
> >     _m = main(_rp)
> >     _loop.create_task(_m)
> >     _loop.create_task(_rp)
> >     timeit.Timer(_loop.run_until_complete()).timeit()
> >     _loop.close()
>
>
> Here is the output:
>
> Traceback (most recent call last):
>   File "/usr/local/lib/python3.8/runpy.py", line 194, in
> _run_module_as_main
>     return _run_code(code, main_globals, None,
>   File "/usr/local/lib/python3.8/runpy.py", line 87, in _run_code
>     exec(code, run_globals)
>   File
>
> "/home/jgossage/EclipseWorkspaces/GlobalVillage/Infrastructure/Play/Async/passwd.py",
> line 34, in <module>
>     _loop.create_task(_rp)
>   File "/usr/local/lib/python3.8/asyncio/base_events.py", line 431, in
> create_task
>     task = tasks.Task(coro, loop=self, name=name)
> TypeError: a coroutine was expected, got <async_generator object
> _read_password at 0x7f1f2454b8b0>
> --
> https://mail.python.org/mailman/listinfo/python-list
>