Articles of aiohttp

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 […]

Obteniendo múltiples urls con aiohttp en Python 3.5

Desde que Python 3.5 introdujo async with la syntax recomendada en los documentos para aiohttp ha cambiado. Ahora para obtener un solo url sugieren: import aiohttp import asyncio async def fetch(session, url): with aiohttp.Timeout(10): async with session.get(url) as response: return await response.text() if __name__ == ‘__main__’: loop = asyncio.get_event_loop() with aiohttp.ClientSession(loop=loop) as session: html = […]

Cómo simular un administrador de contexto asíncrono aiohttp.client.ClientSession.get

Tengo algunos problemas con burlarse del administrador de contexto aiohttp.client.ClientSession.get. Encontré algunos artículos y aquí hay un ejemplo que parece que estaba funcionando: artículo 1 Así que mi código que quiero probar: async_app.py import random from aiohttp.client import ClientSession async def get_random_photo_url(): while True: async with ClientSession() as session: async with session.get(‘random.photos’) as resp: json […]

Las peticiones HEAD con aiohttp son lentas para perros

Dada una lista de direcciones URL de 50 mil sitios web, me encargaron que averiguara cuáles de ellos están disponibles / accesibles. La idea es simplemente enviar una solicitud HEAD a cada URL y ver la respuesta de estado. Por lo que oigo, un enfoque asíncrono es el camino a seguir y por ahora estoy […]

¿Hay alguna forma de usar el cliente aiohttp con socks proxy?

Parece que aiohttp.ProxyConnector no admite socks proxy. ¿Hay alguna solución para esto? Estaría agradecido por cualquier consejo.