Esempio n. 1
0
def _wait_for_any_green(fs, timeout=None):
    assert EVENTLET_AVAILABLE, 'eventlet is needed to wait on green futures'

    def _partition_futures(fs):
        done = set()
        not_done = set()
        for f in fs:
            if f._state in _DONE_STATES:
                done.add(f)
            else:
                not_done.add(f)
        return (done, not_done)

    with _base._AcquireFutures(fs):
        (done, not_done) = _partition_futures(fs)
        if done:
            return (done, not_done)
        waiter = _GreenWaiter()
        for f in fs:
            f._waiters.append(waiter)

    waiter.event.wait(timeout)
    for f in fs:
        f._waiters.remove(waiter)

    with _base._AcquireFutures(fs):
        return _partition_futures(fs)
Esempio n. 2
0
def _wait_for_any_green(fs, timeout=None):
    assert EVENTLET_AVAILABLE, "eventlet is needed to wait on green futures"

    def _partition_futures(fs):
        done = set()
        not_done = set()
        for f in fs:
            if f._state in _DONE_STATES:
                done.add(f)
            else:
                not_done.add(f)
        return (done, not_done)

    with _base._AcquireFutures(fs):
        (done, not_done) = _partition_futures(fs)
        if done:
            return (done, not_done)
        waiter = _GreenWaiter()
        for f in fs:
            f._waiters.append(waiter)

    waiter.event.wait(timeout)
    for f in fs:
        f._waiters.remove(waiter)

    with _base._AcquireFutures(fs):
        return _partition_futures(fs)
Esempio n. 3
0
def _wait_for_any_green(fs, timeout=None):
    eu.check_for_eventlet(RuntimeError('Eventlet is needed to wait on'
                                       ' green futures'))

    with _base._AcquireFutures(fs):
        done, not_done = _partition_futures(fs)
        if done:
            return _base.DoneAndNotDoneFutures(done, not_done)
        waiter = _GreenWaiter()
        for f in fs:
            f._waiters.append(waiter)

    waiter.event.wait(timeout)
    for f in fs:
        f._waiters.remove(waiter)

    with _base._AcquireFutures(fs):
        done, not_done = _partition_futures(fs)
        return _base.DoneAndNotDoneFutures(done, not_done)
Esempio n. 4
0
def _wait_for_any_green(fs, timeout=None):
    eu.check_for_eventlet(RuntimeError('Eventlet is needed to wait on'
                                       ' green futures'))

    with _base._AcquireFutures(fs):
        done, not_done = _partition_futures(fs)
        if done:
            return _base.DoneAndNotDoneFutures(done, not_done)
        waiter = _GreenWaiter()
        for f in fs:
            f._waiters.append(waiter)

    waiter.event.wait(timeout)
    for f in fs:
        f._waiters.remove(waiter)

    with _base._AcquireFutures(fs):
        done, not_done = _partition_futures(fs)
        return _base.DoneAndNotDoneFutures(done, not_done)