Alternatively, there's HTTP client code in examples/crawl.py in the Tulip directory which has also been ported to Trollius. A somewhat newer and better version is part of the "500lines" project on github: https://github.com/aosabook/500lines/tree/master/crawler
On Fri, Jun 6, 2014 at 10:03 AM, Andrew Svetlov <[email protected]> wrote: > I personally don't have strong motivation for supporting both asyncio > and trollius in aiohttp. > My company uses Python 3.4 for asyncio-based projects. > Getting rid of `yield from` and using Future objects everywhere in the > project makes code much more complicated and increases maintenance > cost. > Sure, Nikolay Kim shares my opinion. > Moreover, we are doing some refactoring now (replacing email.Message > with MultiDict for HTTP header processing). > Also we want to make highlevel server API (current one is too complex > to use by average developer). > Thus at least for now (at least for next couple months) better to keep > aiohttp code small and simple. > If some volunteer will invest own time in trollius support after > stabilization of aiohttp API -- welcome! > > On Tue, Jun 3, 2014 at 6:15 AM, Guido van Rossum <[email protected]> wrote: > > I expect most apps to just fix either trollius or asyncio, but I > encourage > > libraries like aiohttp to support both. > > > > I will also consider changes to asyncio to improve interop -- I looked > into > > allowing set_event_loop() with a Trollius event loop, but I am too busy > to > > complete the project for now. > > > > --Guido > > > > > > On Mon, Jun 2, 2014 at 1:34 AM, Victor Stinner <[email protected] > > > > wrote: > >> > >> 2014-06-01 14:51 GMT+02:00 Tobias Oberstein <[email protected] > >: > >> > Hi, > >> > > >> > I missed that discussion. > >> > > >> > IMHO, the renaming further complicates matters, since now selecting > >> > networking library must be done consistently in both library and app > >> > code. > >> > >> Please re-read this thread: it was discussed to make Trollius and > >> asyncio compatible. I don't think that an asyncio event loop should > >> support Trollius coroutines (there is an explicit test to reject > >> coroutines using "yield", only "yield from" is allowed), but a > >> Trollius event loop should support asyncio coroutines and asyncio > >> futures (Future and Taks objects) as well. > >> > >> Trollius project cannot be popular (widely used) if popular asyncio > >> modules like aiohttp don't work on it. I agree that I broke something > >> in Trollius 0.3, but I plan to fix it in Trollius 0.4 and in asyncio. > >> And I need your help to fix it ;-) > >> > >> Remember that asyncio is supposed to be interoperable with other async > >> libraries, so it would be a shame that asyncio is not compatible with > >> "itself" (with Trollius) ;-) > >> > >> > >> By the way, if all applications and modules use the following > >> "try/except ImportError" code, there is no need to worry. Right? > >> > >> --- > >> try: > >> # Use builtin asyncio on Python 3.4+, or Tulip on Python 3.3 > >> import asyncio > >> except ImportError: > >> # Use Trollius on Python <= 3.2 > >> import trollius as asyncio > >> --- > >> > >> Using such code, your application can also use modules supporting only > >> asyncio like aiohttp when running on Python 3.3+. (I'm not sure that > >> it's very useful since you need to have a "fallback" on Python 2.) > >> > >> Victor > > > > > > > > > > -- > > --Guido van Rossum (python.org/~guido) > > > > -- > Thanks, > Andrew Svetlov > -- --Guido van Rossum (python.org/~guido)
