Hi Wolfgang, On 2015-04-23 8:27 AM, Wolfgang Langner wrote: > On Thu, Apr 23, 2015 at 12:35 PM, Paul Sokolovsky <pmiscml at gmail.com> wrote: > >> Hello, >> >> On Thu, 23 Apr 2015 12:18:51 +0300 >> Andrew Svetlov <andrew.svetlov at gmail.com> wrote: >> >> [] >> >>>> 3. >>>> async with and async for >>>> Bead idea, we clutter the language even more and it is one more >>>> thing every newbie could do wrong. >>>> for x in y: >>>> result = await f() >>>> is enough, every 'async' framework lived without it over years. >>> async for i in iterable: >>> pass >>> >>> is not equal for >>> >>> for fut in iterable: >>> i = yield from fut >> But people who used Twisted all their life don't know that! They just >> know that "async for" is not needed and bad. >> >> > I don't think it is bad nor not needed, but the syntax is not beautiful and > for the 90% not doing async stuff irritating and one more thing to learn > and do right/wrong. There is no way to do things wrong in PEP 492. An object either has __aiter__ or it will be rejected by async for. An object either has __aenter__ or it will be rejected by async with. transaction = yield from connection.transaction() try: ... except: yield from transaction.rollback() else: yield from transaction.commit() is certainly more irritating than async with connection.transcation(): ... > > I had also a need for async loop. But there are other solutions like > channels, > not needing a new syntax. > > Also possible a function returning futures and yield in the loop with a > sentinel. > > All this goes the road down to a producer consumer pattern. Nothing more. > > > >> I know I'm a bad guy to make such comments, too bad there's a bit of >> truth in them, or everyone would just call me an a%$&ole right away. >> >> >> Generally, I already provided feedback (on asyncio list) that asyncio >> is based not on native Python concepts like a coroutine, but on >> foreign concurrency concepts like callback or Future, and a coroutine >> is fitted as a second-class citizen on top of that. I understand why >> that was done - to not leave out all those twisteds from a shiny new >> world of asyncio, but sometimes one may wonder if having a clear cut >> would've helped (compat could then have been added as a clearly separate >> subpackage, implemented in terms of coroutines). Now people coming from >> non-coroutine frameworks who were promised compatibility see "bad" >> things in asyncio (and related areas), and people lured by a promise of >> native Python framework see bad things too. >> >> > This has nothing to do with people using twisted or other async frameworks > like tornado. > I think a coroutine should be first class. But all this should be done in a > way a beginner > can handle and not design this stuff for experts only. I think that most of async frameworks out there are for experts only. Precisely because of 'yield from', 'yield', inlineCallbacks, '@coroutine', channels and other stuff. PEP 492 will make it all easier. And Twisted can use its features too. > If we do this we > scare away new people. It doesn't scare away anyone. async/await were the most awaited features in dart and javascript. One of the most popular features in c#. Yury
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4