
This issue trackerhas been migrated toGitHub, and is currentlyread-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.
Created on2020-01-19 06:43 byjmg, last changed2022-04-11 14:59 byadmin. This issue is nowclosed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| asyncitertc.py | jmg,2020-01-19 06:43 | |||
| Pull Requests | |||
|---|---|---|---|
| URL | Status | Linked | Edit |
| PR 18081 | merged | asvetlov,2020-01-20 19:42 | |
| PR 18086 | merged | miss-islington,2020-01-20 22:49 | |
| PR 18087 | merged | miss-islington,2020-01-20 22:49 | |
| PR 18475 | merged | njs,2020-02-12 08:04 | |
| PR 18501 | merged | miss-islington,2020-02-13 08:19 | |
| PR 18502 | merged | njs,2020-02-13 08:42 | |
| Messages (8) | |||
|---|---|---|---|
| msg360254 -(view) | Author: John-Mark Gurney (jmg) | Date: 2020-01-19 06:43 | |
If I create a coro from an async iterator, then wait_for it w/ a timeout, but shielded, so it won't get canceled, and then await upon it, it returns invalid data.See the attached test case.The reason I do the following is to make sure that an async iterator that I have written doesn't return data early, and needs to wait till later. If I didn't shield it, then the async iterator would get cancelled, and I don't want this.I'd expect either correct results to be returned, or an exception to be raised, but in this case, and the docs for wait_for (https://docs.python.org/3/library/asyncio-task.html#asyncio.wait_for ), I'd expect the correct results to be returned.In the attached case, this is the results that I get:$python3.7 asyncitertc.py 3.7.5 (default, Oct 18 2019, 23:59:39) [Clang 7.0.2 (clang-700.1.81)]timed outyielding 1results: Nonegetting 2: 2I do not have python 3.8 to test with. | |||
| msg360326 -(view) | Author: Andrew Svetlov (asvetlov)*![]() | Date: 2020-01-20 18:02 | |
Thanks for the report.Your example could be boiled down to the following:coro = asynciter()await coroawait coroThe second call incorrectly returns None but should raise an exception, double awaiting is a programming error.For regular async functions it raises "RuntimeError: cannot reuse already awaited coroutine" | |||
| msg360340 -(view) | Author: Andrew Svetlov (asvetlov)*![]() | Date: 2020-01-20 22:49 | |
New changeseta96e06db77dcbd3433d39761ddb4615d7d96284a by Andrew Svetlov in branch 'master':bpo-39386: Prevent double awaiting of async iterator (GH-18081)https://github.com/python/cpython/commit/a96e06db77dcbd3433d39761ddb4615d7d96284a | |||
| msg360341 -(view) | Author: miss-islington (miss-islington) | Date: 2020-01-20 23:06 | |
New changeset5cadd3fe3aead1b5bee1438dc03383d6739d4209 by Miss Islington (bot) in branch '3.8':bpo-39386: Prevent double awaiting of async iterator (GH-18081)https://github.com/python/cpython/commit/5cadd3fe3aead1b5bee1438dc03383d6739d4209 | |||
| msg360342 -(view) | Author: miss-islington (miss-islington) | Date: 2020-01-20 23:07 | |
New changesetb76d5e9ee64b8ac861e856d8e41289c0977c75e1 by Miss Islington (bot) in branch '3.7':bpo-39386: Prevent double awaiting of async iterator (GH-18081)https://github.com/python/cpython/commit/b76d5e9ee64b8ac861e856d8e41289c0977c75e1 | |||
| msg361942 -(view) | Author: miss-islington (miss-islington) | Date: 2020-02-13 08:15 | |
New changeset925dc7fb1d0db85dc137afa4cd14211bf0d67414 by Nathaniel J. Smith in branch 'master':bpo-39606: allow closing async generators that are already closed (GH-18475)https://github.com/python/cpython/commit/925dc7fb1d0db85dc137afa4cd14211bf0d67414 | |||
| msg361947 -(view) | Author: miss-islington (miss-islington) | Date: 2020-02-13 08:43 | |
New changeset8dbdf5f275c6462bb522bcf3a29054239d72989d by Miss Islington (bot) in branch '3.8':[3.8]bpo-39606: allow closing async generators that are already closed (GH-18475) (GH-18501)https://github.com/python/cpython/commit/8dbdf5f275c6462bb522bcf3a29054239d72989d | |||
| msg361951 -(view) | Author: Nathaniel Smith (njs)*![]() | Date: 2020-02-13 09:33 | |
New changesetf464edf3239f7867fe31c9cd238a68fb3b90feaa by Nathaniel J. Smith in branch '3.7':bpo-39606: allow closing async generators that are already closed (GH-18475) (GH-18502)https://github.com/python/cpython/commit/f464edf3239f7867fe31c9cd238a68fb3b90feaa | |||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:59:25 | admin | set | github: 83567 |
| 2020-02-13 09:33:42 | njs | set | nosy: +njs messages: +msg361951 |
| 2020-02-13 08:43:28 | miss-islington | set | messages: +msg361947 |
| 2020-02-13 08:42:09 | njs | set | pull_requests: +pull_request17878 |
| 2020-02-13 08:19:50 | miss-islington | set | pull_requests: +pull_request17876 |
| 2020-02-13 08:15:45 | miss-islington | set | messages: +msg361942 |
| 2020-02-12 08:04:59 | njs | set | pull_requests: +pull_request17844 |
| 2020-01-20 23:45:40 | asvetlov | set | status: open -> closed resolution: fixed stage: patch review -> resolved |
| 2020-01-20 23:07:58 | miss-islington | set | messages: +msg360342 |
| 2020-01-20 23:06:44 | miss-islington | set | nosy: +miss-islington messages: +msg360341 |
| 2020-01-20 22:49:53 | miss-islington | set | pull_requests: +pull_request17479 |
| 2020-01-20 22:49:46 | miss-islington | set | pull_requests: +pull_request17478 |
| 2020-01-20 22:49:37 | asvetlov | set | messages: +msg360340 |
| 2020-01-20 19:42:05 | asvetlov | set | keywords: +patch stage: needs patch -> patch review pull_requests: +pull_request17473 |
| 2020-01-20 18:03:03 | asvetlov | set | title: getting invalid data from async iterator -> Prevent double awaiting of async iterator versions: + Python 3.7, Python 3.8, Python 3.9 |
| 2020-01-20 18:02:13 | asvetlov | set | messages: +msg360326 stage: needs patch |
| 2020-01-19 07:18:19 | xtreak | set | nosy: +asvetlov,yselivanov components: + asyncio |
| 2020-01-19 06:43:40 | jmg | create | |