Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #102287
| From | "Frank Millman" <frank@chagford.com> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: Cannot step through asynchronous iterator manually |
| Date | 2016-01-30 10:22 +0200 |
| Message-ID | <mailman.117.1454142160.2338.python-list@python.org> (permalink) |
| References | <n8hjmt$b8n$1@ger.gmane.org> <CALwzid=sSDSm8hdAN+ORJ54A_jEu9Wc8103iqGKAah8mrj-TXw@mail.gmail.com> |
"Ian Kelly" wrote in message
news:CALwzid=sSDSm8hdAN+ORJ54A_jEu9Wc8103iqGKAah8mrj-TXw@mail.gmail.com...
> On Jan 29, 2016 11:04 PM, "Frank Millman" <frank@chagford.com> wrote:
> >
> > Hi all
> >
> > To loop though an iterator one usually uses a higher-level construct
> > such
as a 'for' loop. However, if you want to step through it manually you can
do so with next(iter).
> >
> > I expected the same functionality with the new 'asynchronous iterator'
> > in
Python 3.5, but I cannot find it.
> >
> > I can achieve the desired result by calling 'await aiter.__anext__()',
but this is clunky.
> >
> > Am I missing something?
>
> async for x in aiter:
> pass
>
> Can only be used inside a coroutine, of course.
I know that you can use this to loop through the entire iterator, but I have
a special case.
There are times when I want to execute a SELECT statement, and test for
three possibilities -
- if no rows are returned, the object does not exist
- if one row is returned, the object does exist
- if more that one row is returned, raise an exception
We had a recent discussion about the best way to do this, and ChrisA
suggested the following, which I liked -
cur.execute('SELECT ...)
try:
row = next(cur)
except StopIteration:
# row does not exist
else:
try:
next_row = next(cur)
except StopIteration:
# row does exist
else:
# raise exception
Now that I have gone async, I want to do the same with an asynchronous
iterator.
Frank
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: Cannot step through asynchronous iterator manually "Frank Millman" <frank@chagford.com> - 2016-01-30 10:22 +0200
csiph-web