item = asyncio.async(item, loop=self._loop)
self._set.add(item)
item.add_done_callback(self._remove)

def _remove(self, item):
    if not item.done():
        raise ValueError('Cannot remove a pending Future')
self._set.remove(item)
if self._waiters:
    waiter = self._waiters.pop(0)
waiter.set_result(None)

@asyncio.coroutine
def wait(self):
    return asyncio.wait(self._set)
Постепенно создавайте асинхронные задачи и ждите их завершения.