Articles of python asyncio

¿Cómo crear un generador asíncrono en Python?

Estoy tratando de reescribir este código Python2.7 al nuevo orden mundial asíncrono: def get_api_results(func, iterable): pool = multiprocessing.Pool(5) for res in pool.map(func, iterable): yield res map() bloquea hasta que se hayan calculado todos los resultados, por lo que estoy tratando de volver a escribir esto como una implementación asíncrona que dará resultados tan pronto como […]

RuntimeError: este bucle de eventos ya se está ejecutando en Python

Creo que estoy recibiendo este error porque mi código llama asyncio.get_event_loop().run_until_complete(foo()) dos veces. Una vez desde foo() y por segunda vez desde la función llamada por foo() . Mi pregunta es entonces: ¿por qué debería ser esto un problema? ¿Por qué debería importarme que este bucle se esté ejecutando? Se hizo una edición de esta […]

¿Cómo agregar una coroutine a un asyncio loop en ejecución?

¿Cómo se puede agregar una nueva coroutine a un bucle asyncio en ejecución? Es decir. Una que ya está ejecutando un conjunto de coroutines. Supongo que, como solución alternativa, uno podría esperar a que se completen las coroutines existentes y luego inicializar un nuevo bucle (con la coroutine adicional). Pero hay una manera mejor?

¿Cómo medir el rendimiento del código asyncio de Python?

No puedo usar las herramientas y técnicas normales para medir el rendimiento de una coroutine porque el tiempo que se tarda en await no debe tomarse en consideración (o solo debe considerar la sobrecarga de la lectura de la latencia de IO esperada pero no la latencia). Entonces, ¿cómo medir el tiempo que tarda una […]

Python – Ejecutando el servidor websocket de Autobahn | Python asyncio en un subproceso o subproceso separado

Tengo un progtwig GUI basado en tkinter que se ejecuta en Python 3.4.1. Tengo varios subprocesos que se ejecutan en el progtwig para obtener datos JSON de varias direcciones URL. Estoy deseando agregar algunas funciones de WebSocket para poder permitir que el progtwig actúe como un servidor y permitir que varios clientes se conecten a […]

Asyncio web scraping 101: recuperando múltiples urls con aiohttp

En la pregunta anterior, uno de los autores de aiohttp sugirió amablemente la forma de obtener múltiples urls con aiohttp usando el nuevo async with syntax de Python 3.5 : import aiohttp import asyncio async def fetch(session, url): with aiohttp.Timeout(10): async with session.get(url) as response: return await response.text() async def fetch_all(session, urls, loop): results = […]

Python 3.5 async / await con ejemplo de código real

He leído montones de artículos y tutoriales sobre el tema 3.5 async / await de Python. Debo decir que estoy bastante confundido, porque algunos usan get_event_loop () y run_until_complete (), algunos usan asegurar_future (), algunos usan asyncio.wait (), y otros usan call_soon (). Parece que tengo muchas opciones, pero no tengo idea si son completamente […]

Cómo establecer un atributo de clase con esperar en __init__

¿Cómo puedo definir una clase con await en el constructor o cuerpo de la clase? Por ejemplo lo que quiero: import asyncio # some code class Foo(object): async def __init__(self, settings): self.settings = settings self.pool = await create_pool(dsn) foo = Foo(settings) # it raises: # TypeError: __init__() should return None, not ‘coroutine’ o ejemplo con […]

Python Asyncio, cómo crear y cancelar tareas desde otro hilo.

Tengo una aplicación multi-hilo de python. Quiero ejecutar un bucle asyncio en un subproceso y publicar calbacks y coroutines desde otro subproceso. Debería ser fácil, pero no puedo moverme la cabeza con las cosas de asyncio . Llegué a la siguiente solución que hace la mitad de lo que quiero, no dude en comentar sobre […]

¿Cómo crear y ejecutar correctamente las tareas simultáneas utilizando el módulo asyncio de python?

Estoy tratando de entender e implementar correctamente dos objetos de Task ejecutan simultáneamente utilizando el módulo asyncio relativamente nuevo de Python 3. En pocas palabras, asyncio parece estar diseñado para manejar procesos asíncronos y Task ejecución simultánea de Task en un bucle de eventos. Promueve el uso de await (aplicado en funciones asíncronas) como una […]