(fut, timeout)
Wait for the single Future or coroutine to complete, with timeout.

    Coroutine will be wrapped in Task.

    Returns result of the Future or coroutine.  When a timeout occurs,
    it cancels the task and raises TimeoutError.  To avoid the task
    cancellation, wrap it in shield().

    If the wait is cancelled, the task is also cancelled.

    This function is a coroutine.
Wait for the single Future or coroutine to complete, with timeout.
Wait for the single Future or coroutine to complete with timeout .
async def wait_for(fut, timeout):
    """Wait for the single Future or coroutine to complete, with timeout.

    Coroutine will be wrapped in Task.

    Returns result of the Future or coroutine.  When a timeout occurs,
    it cancels the task and raises TimeoutError.  To avoid the task
    cancellation, wrap it in shield().

    If the wait is cancelled, the task is also cancelled.

    This function is a coroutine.
    """
    loop = events.get_running_loop()

    if timeout is None:
        return await fut

    if timeout <= 0:
        fut = ensure_future(fut, loop=loop)

        if fut.done():
            return fut.result()

        await _cancel_and_wait(fut, loop=loop)
        try:
            return fut.result()
        except exceptions.CancelledError as exc:
            raise exceptions.TimeoutError() from exc

    waiter = loop.create_future()
    timeout_handle = loop.call_later(timeout, _release_waiter, waiter)
    cb = functools.partial(_release_waiter, waiter)

    fut = ensure_future(fut, loop=loop)
    fut.add_done_callback(cb)

    try:
        # wait until the future completes or the timeout
        try:
            await waiter
        except exceptions.CancelledError:
            if fut.done():
                return fut.result()
            else:
                fut.remove_done_callback(cb)
                # We must ensure that the task is not running
                # after wait_for() returns.
                # See https://bugs.python.org/issue32751
                await _cancel_and_wait(fut, loop=loop)
                raise

        if fut.done():
            return fut.result()
        else:
            fut.remove_done_callback(cb)
            # We must ensure that the task is not running
            # after wait_for() returns.
            # See https://bugs.python.org/issue32751
            await _cancel_and_wait(fut, loop=loop)
            # In case task cancellation failed with some
            # exception, we should re-raise it
            # See https://bugs.python.org/issue40607
            try:
                return fut.result()
            except exceptions.CancelledError as exc:
                raise exceptions.TimeoutError() from exc
    finally:
        timeout_handle.cancel()
async def wait_for ( fut , timeout ) : loop = events . get_running_loop ( ) if timeout is None : return await fut if timeout <= 0 : fut = ensure_future ( fut , loop = loop ) if fut . done ( ) : return fut . result ( ) await _cancel_and_wait ( fut , loop = loop ) try : return fut . result ( ) except exceptions . CancelledError as exc : raise exceptions . TimeoutError ( ) from exc waiter = loop . create_future ( ) timeout_handle = loop . call_later ( timeout , _release_waiter , waiter ) cb = functools . partial ( _release_waiter , waiter ) fut = ensure_future ( fut , loop = loop ) fut . add_done_callback ( cb ) try : # wait until the future completes or the timeout try : await waiter except exceptions . CancelledError : if fut . done ( ) : return fut . result ( ) else : fut . remove_done_callback ( cb ) # We must ensure that the task is not running # after wait_for() returns. # See https://bugs.python.org/issue32751 await _cancel_and_wait ( fut , loop = loop ) raise if fut . done ( ) : return fut . result ( ) else : fut . remove_done_callback ( cb ) # We must ensure that the task is not running # after wait_for() returns. # See https://bugs.python.org/issue32751 await _cancel_and_wait ( fut , loop = loop ) # In case task cancellation failed with some # exception, we should re-raise it # See https://bugs.python.org/issue40607 try : return fut . result ( ) except exceptions . CancelledError as exc : raise exceptions . TimeoutError ( ) from exc finally : timeout_handle . cancel ( )