Done in https://github.com/python/asyncio/pull/309
Both notes a fixed.

On Wednesday, January 6, 2016 at 10:16:45 PM UTC+2, Guido van Rossum wrote:
>
> Having thought and looked this over I think this would be a nice addition, 
> so I welcome a PR.
>
> Some comments on the code you linked to:
>
> - Should probably verify that self._task is None when __enter__ is called.
> - Maybe also clear self._cancel_handler in __exit__? (Else why clear 
> self._task?)
>
>
>
> On Sun, Dec 27, 2015 at 10:27 PM, Andrew Svetlov <[email protected] 
> <javascript:>> wrote:
>
>> asyncio has wait_for coroutine for timeouts.
>>
>> It works like:
>>
>> async def coro():
>>     # do long running task
>>     await asyncio.sleep(10000)
>>
>> await asyncio.wait_for(coro(), 1.5)
>>
>> The approach requires splitting code into two functions: one for waiting 
>> and other for performing the task.
>>
>> aiohttp has Timeout class (
>> https://github.com/KeepSafe/aiohttp/blob/master/aiohttp/helpers.py#L451-L488
>> ).
>> The code from example may be rewritten as:
>>
>> with Timeout(1.5):
>>     # do long running task
>>     await asyncio.sleep(10000)
>>
>> It raises asyncio.TimeoutError and cancels inner code if timeout runs out.
>>
>> I believe the Timeout context manager worth to be included into asyncio 
>> itself.
>> It is a regular context manager (no __aenter__/__aexit__ required) and 
>> works even with Python 3.3
>>
>> I'll be happy to make a Pull Request after getting general agreement.
>>
>
>
>
> -- 
> --Guido van Rossum (python.org/~guido)
>

Reply via email to