Articles of asynchronous

¿Está `await` en Python3 Cooperative Multitasking?

Estoy tratando de entender las nuevas rutinas asíncronas (introducidas en Python 3.5). En 1997 asistí a un curso en la universidad que cubrió aproximadamente el contenido del libro Modern Operating Systems de Andrew Tanenbaum. De alguna manera, la await en Python3 me recuerda a Cooperative Multitasking . De Wikipedia: La multitarea cooperativa, también conocida como […]

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

¿Método asíncrono llamado en Python sin crear subprocesos o proceso de bifurcación?

Hace algunos años, (para comparación) las solicitudes de ajax de JavaScript síncronas quedaron en desuso debido a la sobrecarga. Estoy en la siguiente situación: def ssh_network_operation_with_paramiko(string): server_response=Do_some_stuff_with_null_characters_in_string(string) Do_something_with_server_response(server_response) for i in very_very_large_range ssh_network_operation_with_paramiko(i) Básicamente, usar proceso o hilos sería sinónimo de crear una bomba de bifurcación. Entonces, ¿es posible realizar llamadas asíncronas sin crear subprocesos […]

¿Cómo puedo cancelar una tarea asíncrona colgada en un tornado, con un tiempo de espera?

Mi configuración es Python Tornado Server, que procesa tareas de forma asíncrona con un ThreadPoolExecutor . En algunas condiciones, la tarea puede convertirse en un bucle infinito. Con el decorador with_timeout , he logrado detectar la excepción de tiempo de espera y devolver un resultado de error al cliente. El problema es que la tarea […]

Interpretar eventlet.wsgi.server

Tengo este progtwig simple de Python: from eventlet import wsgi import eventlet from eventlet.green import time def hello_world(env, start_response): print “got request” time.sleep(10) start_response(‘200 OK’, [(‘Content-Type’, ‘text/plain’)]) return [‘Hello, World!\n’] wsgi.server(eventlet.listen((”, 8090)), hello_world) Entonces, cuando lo ejecuto y abro http://localhost:8090/ en mi navegador varias veces, la got request obtención solo se imprime después de que […]

Cómo limitar el número de conexiones simultáneas en Twisted

así que tengo un servidor torcido que construí, y me preguntaba cuál es la mejor manera de limitar el número de conexiones simultáneas. ¿Es mi devolución de fábrica ninguna de la mejor manera? Cuando hago esto, lanzo muchas excepciones como: exceptions.AttributeError: ‘NoneType’ object has no attribute ‘makeConnection’ Me gustaría de alguna manera que los clientes […]

Inicia la función asíncrona sin importar el paquete asyncio.

Es posible iniciar una función como esta. async def foo(): while True: print(“Hello!”) ¿Sin importar el paquete asyncio (y obtener el bucle de eventos)? Estoy buscando un principio similar a los goroutines de Go, donde se puede lanzar una coroutine con solo go . Edición: la razón por la que no estoy importando el paquete […]

Torcido: a la espera de que terminen las subtareas

En mi código, tengo dos tareas hipotéticas: una obtiene urls de un generador y las descarga por lotes utilizando el Cooperator de Twisted, y la otra toma una fuente descargada y la analiza de forma asíncrona. Estoy tratando de encapsular todas las tareas de búsqueda y análisis en un único objeto diferido que devuelve la […]

Iteradores perezosos (generadores) con asyncio

Tengo un código de locking, no asíncrono como este: def f(): def inner(): while True: yield read() return inner() Con este código, la persona que llama puede elegir cuándo detener la función para generar datos. ¿Cómo cambiar esto a async? Esta solución no funciona: async def f(): async def inner(): while True: yield await coroutine_read() […]

¿Cómo puedo agrupar conexiones usando psycopg y gevent?

El estado de los documentos de psycopg: “Las conexiones de Psycopg no son seguras para subprocesos verdes y no pueden ser utilizadas simultáneamente por diferentes subprocesos verdes. Intentar ejecutar más de un comando a la vez con un cursor por subproceso dará como resultado un error (o un interlocking en las versiones antes de 2.4.2). […]