That does seem better. Thanks!
On Tuesday, November 11, 2014 7:16:27 PM UTC-6, Guido van Rossum wrote: > > I recommend calling async() to convert each coroutine to a task. Then call > wait() with the tasks. You can then compare the returned task(s) directly > to the input tasks. I.e.: > > ws_task = asyncio.async(websocket.recv()) > redis_task = asyncio.async(redis_subscriber.next_published()) > done, pending = yield from asyncio.wait([ws_task, redis_task], > return_when=asyncio.FIRST_COMPLETED) > for task in done: > if task == ws_task: > yield from send_to_redis(task.result()) > elif task == redis_task: > yield from send_to_websocket(task.result()) > > > On Tue, Nov 11, 2014 at 3:52 PM, Don Spaulding <[email protected] > <javascript:>> wrote: > >> Hi All, >> >> I'm trying to figure out The Right Way to wait on an asynchronous result >> from two different asyncio-enabled libraries. At first glance (and my >> first implementation of a solution to my problem), it seems like I want to >> use something like the following: >> >> # given a server that shuttles messages between a websocket and a >> redis server >> # wait until the next message arrives, from whichever source, and >> send it to the other >> ws_coro = websocket.recv() >> redis_coro = redis_subscriber.next_published() >> done, pending = yield from asyncio.wait([ws_coro, redis_coro], >> return_when=asyncio.FIRST_COMPLETED) >> for task in done: >> if task._coro == ws_coro: >> yield from send_to_redis(task.result()) >> elif task._coro == redis_coro: >> yield from send_to_websocket(task.result()) >> >> Indeed, this works, except that the behavior that comes after >> asyncio.wait() seems a little suspect to me. To differentiate between the >> returned result, I have to use the private attribute `task._coro`. Is that >> really the intended use of asyncio.wait? Is there something more >> appropriate to my situation? >> >> To recap, I want to wait on the first completed task of two (or more) >> heterogenous task types. And then I want to process results from each task >> type in a distinct way. >> >> I'd gladly welcome any advice on the topic. >> -- >> Don >> > > > > -- > --Guido van Rossum (python.org/~guido) >
