Articles of aiohttp

Python aiohttp / asyncio – cómo procesar los datos devueltos

Estoy en el proceso de mover algún código síncrono a asyncio usando aiohttp. El código síncrono tardó 15 minutos en ejecutarse, así que espero mejorar esto. Tengo un código de trabajo que obtiene datos de algunas direcciones URL y devuelve el cuerpo de cada uno. Pero esto es solo contra 1 sitio de laboratorio, tengo […]

¿Cómo pasar parámetros adicionales a handle_client coroutine?

La forma recomendada de usar asyncio para un servidor de socket es: import asyncio async def handle_client(reader, writer): request = (await reader.read(100)).decode() response = “Data received.” writer.write(response.encode()) async def main(): loop.create_task(asyncio.start_server(handle_client, ‘localhost’, 15555)) loop = asyncio.get_event_loop() loop.create_task(main()) loop.run_forever() Esto funciona bien, pero ahora necesito recibir una solicitud de cliente adecuada y luego usar la biblioteca […]

¿Cómo ejecutar un servidor aiohttp en un hilo?

Este ejemplo de servidor aiohttp en un subproceso falla con un RuntimeError: There is no current event loop in thread ‘Thread-1′. error: import threading from aiohttp import web def aiohttp_server(): def say_hello(request): return web.Response(text=’Hello, world’) app = web.Application(debug=True) app.add_routes([web.get(‘/’, say_hello)]) web.run_app(app) t = threading.Thread(target=aiohttp_server) t.start() ¿Cómo ejecutar un servidor aiohttp en hilo?

La solicitud aiohttp de Python se detuvo pero no generó ninguna excepción

Yo uso aiohttp para solicitar la url. La mayoría de las veces se ejecuta normalmente, pero a veces se detiene sin generar ninguna excepción. Como puede ver en el código, detecto todas las excepciones, pero cuando se detiene, no se imprime ningún registro de excepciones. Los registros se ven como: get_live_league_games: while True try yield […]

asyncio aiohttp cancela un sondeo de solicitud http, devuelve un resultado

Estoy usando este código para crear una solicitud http cada 5 segundos. async def do_request(): async with aiohttp.ClientSession() as session: async with session.get(‘http://localhost:8000/’) as resp: print(resp.status) return await resp.text() No encontré un progtwigdor incorporado, así que escribí esta función (similar a javascript): async def set_interval(fn, seconds): while True: await fn() await asyncio.sleep(seconds) Y así es […]

¿Cómo puedo esperar a que el __del__ de un objeto termine antes de que se cierre el bucle asíncrono?

Tengo una clase que tendrá un objeto aiohttp.ClientSession en ella. Normalmente cuando usas async with aiohttp.ClientSession() as session: # some code La sesión se cerrará ya que se llama al método __aexit__ de la sesión. No puedo usar un administrador de contexto ya que quiero mantener la sesión persistente durante toda la vida útil del […]

IO asíncrona paralela en las coroutinas de Python

Ejemplo simple: necesito hacer dos solicitudes HTTP no relacionadas en paralelo. ¿Cuál es la forma más sencilla de hacer eso? Espero que sea así: async def do_the_job(): with aiohttp.ClientSession() as session: coro_1 = session.get(‘http://httpbin.org/get’) coro_2 = session.get(‘http://httpbin.org/ip’) return combine_responses(await coro_1, await coro_2) En otras palabras, quiero iniciar las operaciones de E / S y esperar […]

Python asyncio / aiohttp: ¿Cuáles son los requisitos con respecto a BaseProtocol.connection_lost ()?

La documentación de python para connection_lost estados: connection_made () y connection_lost () se llaman exactamente una vez por cada conexión exitosa. Más abajo también está la siguiente máquina de estado: inicio -> connection_made () [-> data_received () *] [-> eof_received ()?] -> connection_lost () -> end Además, la documentación para BaseTransport.close() establece: Después de que […]

nested “async with” utilizando aiohttp

Me gustaría crear una clase de planificador que use aiohttp para hacer llamadas a la API. Intenté esto: import asyncio import aiohttp class MySession: def __init__(self): self.session = None async def __aenter__(self): async with aiohttp.ClientSession() as session: self.session = session return self async def __aexit__(self, exc_type, exc_val, exc_tb): if self.session: await self.session.close() async def method1(): […]

Python – Intenta decodificar JSON con un mimetype inesperado:

Recientemente cambié las solicitudes a aiohttp porque no podía usarlo en asyncio loops. El canje fue perfecto y todo va bien, excepto por una cosa. Mi consola esta llena de Attempt to decode JSON with unexpected mimetype: y Attempt to decode JSON with unexpected mimetype: txt/html; charset=utf-8 Mi código tiene una lista de sitios a […]