Articles of python asyncio

¿Qué puede hacer que la simple invocación de asyncio.new_event_loop () se bloquee?

Estoy usando la siguiente función para forzar a una coroutine a correr sincrónicamente: import asyncio import inspect import types from asyncio import BaseEventLoop from concurrent import futures def await_sync(coro: types.CoroutineType, timeout_s: int=None): “”” :param coro: a coroutine or lambda loop: coroutine(loop) :param timeout_s: :return: “”” loop = asyncio.new_event_loop() # type: BaseEventLoop if not is_awaitable(coro): coro […]

Semántico equivalente de async para

De los documentos relativos a async for syntax en Python 3.5, deduje que se introdujo para iterar sobre un iterador esperable. Hay algo que no obtengo en el equivalente semántico que sigue la descripción: iter = (ITER) iter = type(iter).__aiter__(iter) running = True while running: try: TARGET = await type(iter).__anext__(iter) except StopAsyncIteration: running = False […]

¿Cómo cancelar los subprocesos de ejecución prolongada utilizando `concurrent.futures.ProcessPoolExecutor`?

Puedes ver el completo aquí . A continuación una versión simplificada de mi código: executor = ProcessPoolExecutor(10) try: coro = bot.loop.run_in_executor(executor, processUserInput, userInput) result = await asyncio.wait_for(coro, timeout=10.0, loop=bot.loop) except asyncio.TimeoutError: result=”Operation took longer than 10 seconds. Aborted.” Desafortunadamente, cuando una operación se agota, el proceso aún se está ejecutando, aunque el futuro se haya […]

Configuración de un descriptor en python3.5 asincrónicamente

Puedo escribir un descriptor devolviendo un futuro que podría esperarse. class AsyncDescriptor: def __get__(self, obj, cls=None): # generate some async future here return future def __set__(self, obj, value): # generate some async future here return future class Device: attr=AsyncDescriptor() device=Device() Ahora puedo obtener el valor en un coroutine con value=await device.attr . ¿Cómo puedo establecer […]

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

El progtwig Python Discord.py que genera una lista grande se está quedando sin memoria y se bloquea en PythonAnywhere

Creé un bot para mi servidor Discord, que va a la API de Reddit para un subreddit determinado, y publica los 10 mejores resultados del día en el chat de Discord, según los subreddit que ingresaste. No tiene en cuenta las publicaciones propias, y en realidad solo publica fotos y GIF. El comando de mensaje […]

Use asyncio y Tkinter juntos sin congelar la GUI

Quiero usar asyncio en combinación con una GUI tkinter . Soy nuevo en asyncio y mi comprensión de esto no es muy detallada. El ejemplo aquí comienza con 10 tareas al hacer clic en el primer botón. La tarea es simplemente simular el trabajo con un sleep() durante algunos segundos. El código de ejemplo funciona […]

¿Qué parte de asyncio es concurrente? Quisiera detalles de implementación

La descripción del módulo asyncio es: Este módulo proporciona infraestructura para escribir código concurrente de un solo subproceso utilizando corrutinas, multiplexación de acceso de E / S a través de sockets y otros recursos, ejecutando clientes y servidores de red, y otras primitivas relacionadas. He estado leyendo sobre el nuevo y extraordinario módulo / paquete […]