async def main_task(loop):
    tasks = [
        loop.create_task(wait_task(i * 2, i)) for i in range(1, NUM_TASKS + 1)
    ]

    while True:
        demo.LOG('Waiting for any task to finish...')
        done, pending = await asyncio.wait(tasks,
                                           loop=loop,
                                           timeout=2,
                                           return_when=FIRST_COMPLETED)

        if not done:
            demo.LOG(' **TIMEOUT** ')
            continue

        for task in done:
            demo.LOG(f'task result: {task.result()}')
            tasks.remove(task)

        if not pending:
            break

    demo.LOG('all subordinate tasks completed; stopping event loop')
    loop.stop()
async def waiter():
    demo.LOG_TASK_START('waiter')
    try:
        await asyncio.sleep(60)
    except asyncio.CancelledError:
        demo.LOG('** CANCELLED **')
        raise
    demo.LOG_TASK_END()
Exemplo n.º 3
0
async def main(loop):
    async with aiohttp.ClientSession(loop=loop) as session:

        results = await asyncio.gather(
            fetch(session, 'http://python.org'),
            fetch(session, 'http://www.google.com'),
            fetch(session, 'http://pypi.python.org/pypi'))

        for result in results:
            demo.LOG(f'url={result[0]} status={result[1]} length={result[2]}')
Exemplo n.º 4
0
async def thumper():
    while True:
        await asyncio.sleep(1)
        demo.LOG('...thump')
import asyncio
import demo


async def get_a():
    demo.LOG_TASK_START('get_a')
    await asyncio.sleep(2)
    demo.LOG_TASK_END()
    return 1


async def get_b():
    demo.LOG_TASK_START('get_b')
    await asyncio.sleep(4)
    demo.LOG_TASK_END()
    return 2


async def parent():
    result = await asyncio.gather(get_a(), get_b())
    return result[0] + result[1]


loop = asyncio.get_event_loop()

result = loop.run_until_complete(parent())
loop.close()

demo.LOG(f'result={result}')
Exemplo n.º 6
0
async def get_value(timeout):
    await asyncio.sleep(timeout)
    demo.LOG('returning result')
    return 1234
Exemplo n.º 7
0
"""
Show how to get the result from a coroutine

...
"""
import asyncio
import demo


async def get_value(timeout):
    await asyncio.sleep(timeout)
    demo.LOG('returning result')
    return 1234


async def compute_value():
    return await get_value(1)


async def wait_task():
    await asyncio.sleep(5)


loop = asyncio.get_event_loop()

calc_task = loop.create_task(compute_value())
wait_task = loop.create_task(wait_task())

loop.run_until_complete(wait_task)
demo.LOG(f'result={calc_task.result()}')
Exemplo n.º 8
0

async def main_task(loop):
    tasks = [
        loop.create_task(wait_task(i * 2, i)) for i in range(1, NUM_TASKS + 1)
    ]

    while True:
        demo.LOG('Waiting for any task to finish...')
        done, pending = await asyncio.wait(tasks,
                                           loop=loop,
                                           return_when=FIRST_COMPLETED)

        for task in done:
            demo.LOG(f'task result: {task.result()}')
            tasks.remove(task)

        if not pending:
            break

    demo.LOG('all subordinate tasks completed; stopping event loop')
    loop.stop()


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.create_task(main_task(loop))
    loop.run_forever()
    demo.LOG('eventloop terminated')
    loop.close()
def stop_writer(task):
    demo.LOG('Cancelling task...')
    task.cancel()
Exemplo n.º 10
0
Cancel a running task

Warning --- call_later takes a regular function not a coroutine
"""
import asyncio, demo


async def waiter():
    demo.LOG_TASK_START('waiter')
    try:
        await asyncio.sleep(60)
    except asyncio.CancelledError:
        demo.LOG('** CANCELLED **')
        raise
    demo.LOG_TASK_END()


def stop_writer(task):
    demo.LOG('Cancelling task...')
    task.cancel()


loop = asyncio.get_event_loop()

fut = loop.create_task(waiter())
loop.call_later(5, stop_writer, fut)

loop.run_until_complete(fut)

demo.LOG(f'result={fut.result()}')
Exemplo n.º 11
0
async def process_data(queue, ndx):

    while True:
        data = await queue.get()
        demo.LOG(f'processing data [{ndx}]: {data}')
        await asyncio.sleep(5)
Exemplo n.º 12
0
async def read_data(queue):
    while True:
        await asyncio.sleep(1)
        data = randint(0, 1000)
        demo.LOG(f'adding data to queue... {data}; before queue len={queue.qsize()}')
        await queue.put(data)
Exemplo n.º 13
0
async def stop_task():
    await asyncio.sleep(10)

    demo.LOG('Stopping event loop...')
    loop = asyncio.get_event_loop()
    loop.stop()
Exemplo n.º 14
0
Explicitly ending the event loop from a task

...
"""
import asyncio, demo


async def waiter():
    demo.LOG_TASK_START('waiter')
    try:
        await asyncio.sleep(60)
    except asyncio.CancelledError:
        demo.LOG('waiter **CANCELLED**')


async def stop_task():
    await asyncio.sleep(10)

    demo.LOG('Stopping event loop...')
    loop = asyncio.get_event_loop()
    loop.stop()


loop = asyncio.get_event_loop()
loop.create_task(stop_task())
loop.create_task(waiter())

demo.LOG('Starting event loop forever...')
loop.run_forever()
demo.LOG("Event loop terminated")
loop.close()
Exemplo n.º 15
0
async def get_value(timeout):
    await asyncio.sleep(timeout)
    demo.LOG('raising get_value error')
    raise Exception('get_value error')
"""

import asyncio
import demo


async def get_value(timeout):
    await asyncio.sleep(timeout)
    return 1234


async def compute_value():
    return await get_value(10)


async def wait_task():
    await asyncio.sleep(5)


loop = asyncio.get_event_loop()

calc_task = loop.create_task(compute_value())
wait_task = loop.create_task(wait_task())

loop.run_until_complete(wait_task)

if calc_task.done():
    demo.LOG(f'result={calc_task.result()}')
else:
    demo.LOG(f'result is not ready yet')