Articles of python asyncio

Haciendo peticiones de 1 millón con aiohttp / asyncio – literalmente

Seguí este tutorial: https://pawelmhm.github.io/asyncio/python/aiohttp/2016/04/22/asyncio-aiohttp.html y todo funciona bien cuando hago unas 50 000 solicitudes. Pero necesito hacer 1 mil llamadas a la API y luego tengo un problema con este código: url = “http://some_url.com/?id={}” tasks = set() sem = asyncio.Semaphore(MAX_SIM_CONNS) for i in range(1, LAST_ID + 1): task = asyncio.ensure_future(bound_fetch(sem, url.format(i))) tasks.add(task) responses = asyncio.gather(*tasks) […]

¿Cómo conecto asyncio.coroutines que continuamente producen y consumen datos?

Estoy tratando de aprender cómo (idiomáticamente) usar el asyncio Python 3.4. Mi mayor obstáculo es cómo “encadenar” coroutines que continuamente consumen datos, actualizar el estado con él y permitir que otro coroutine use ese estado. El comportamiento observable que espero de este progtwig de ejemplo es simplemente informar periódicamente sobre la sum de los números […]

Asyncio decodifica utf-8 con StreamReader

Me estoy acostumbrando a asyncio y me parece que el manejo de la tarea es bastante bueno, pero puede ser difícil mezclar las bibliotecas async con las bibliotecas tradicionales de io. El problema al que me enfrento actualmente es cómo descodificar correctamente un StreamReader asíncrono. La solución más sencilla es read() trozos de cadenas de […]

cola de asyncio consumidor coroutine

Tengo una subclase de asyncio.Protocol recibe datos de un servidor. Estoy almacenando estos datos (cada línea, porque los datos son texto) en un asyncio.Queue . import asyncio q = asyncio.Queue() class StreamProtocol(asyncio.Protocol): def __init__(self, loop): self.loop = loop self.transport = None def connection_made(self, transport): self.transport = transport def data_received(self, data): for message in data.decode().splitlines(): yield […]

¿Cuál es la diferencia entre concurrent.futures y asyncio.futures?

Para aclarar el motivo de esta pregunta: Es confuso usar dos módulos con el mismo nombre. ¿Qué representan ellos que los hace distintos? ¿Qué tarea (s) puede uno resolver que el otro no puede y viceversa?

¿Cómo detectar fallos de escritura en asyncio?

Como ejemplo simple, considere el equivalente de red de / dev / cero, a continuación. (O más realista, solo un servidor web que envía un archivo grande). Si un cliente se desconecta antes, obtienes una gran cantidad de mensajes de registro: WARNING:asyncio:socket.send() raised exception. Pero no estoy encontrando ninguna manera de atrapar dicha excepción. El […]

Cómo usar el registro incorporado de Python con Asyncio (error de permiso)

Estoy usando un TimedRotatingFileHandler desde el inicio de sesión para iniciar sesión en un archivo nuevo cada noche. Según los documentos de registro : El sistema guardará los archivos de registro antiguos agregando extensiones al nombre de archivo. Y es cuando esto sucede que recibo un error de permiso: — Error de registro — PermissionError: […]

Bloquear redis hasta que exista clave

Soy nuevo en Redis y me preguntaba si hay una manera de poder await get un valor por clave hasta que exista la clave. Código mínimo: async def handler(): data = await self._fetch(key) async def _fetch(key): return self.redis_connection.get(key) Como usted sabe, si tal key no existe, no return None . Pero como en mi proyecto, […]

¿Cómo combinar el apio con el asyncio?

¿Cómo puedo crear un contenedor que haga que las tareas de apio se vean como asyncio.Task ? ¿O hay una mejor manera de integrar Celery con asyncio ? @asksol, el creador de Celery, dijo esto : Es bastante común usar Celery como una capa distribuida en la parte superior de los marcos de E / […]

¿Cómo puedo implementar asyncio websockets en una clase?

Me gustaría conectarme a un websocket a través de asyncio y websockets , con el formato que se muestra a continuación. ¿Cómo podría lograr esto? from websockets import connect class EchoWebsocket: def __init__(self): self.websocket = self._connect() def _connect(self): return connect(“wss://echo.websocket.org”) def send(self, message): self.websocket.send(message) def receive(self): return self.websocket.recv() echo = EchoWebsocket() echo.send(“Hello!”) print(echo.receive()) # “Hello!”