Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

2.5K
Vistas
RuntimeError: no hay un bucle de eventos actual en el subproceso 'Subproceso-1', subprocesamiento múltiple y error asincrónico

Tengo un hilo que llama bucles asyncio, sin embargo, esto provoca la excepción mencionada:

 RuntimeError: There is no current event loop in thread 'Thread-1'.

Esta pregunta: RuntimeError: No hay un bucle de eventos actual en el subproceso en async + apscheduler se encontró con el mismo problema, sin embargo, se refirieron a un programador que no tengo.

Mi código es el siguiente:

 def worker(ws): l1 = asyncio.get_event_loop() l1.run_until_complete(ws.start()) l2 = asyncio.get_event_loop() l2.run_forever() if __name__ == '__main__': ws = Server() p = threading.Thread(target=worker,args=(ws,)) p.start() while True: try: #...do sth except KeyboardInterrupt: p.join() exit()
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

El nuevo hilo no tiene un bucle de eventos, por lo que debe pasarlo y configurarlo explícitamente:

 def worker(ws, loop): asyncio.set_event_loop(loop) loop.run_until_complete(ws.start()) if __name__ == '__main__': ws = Server() loop = asyncio.new_event_loop() p = threading.Thread(target=worker, args=(ws, loop,)) p.start()

Además, p.join() no terminará su secuencia de comandos correctamente ya que nunca detiene el servidor, por lo que su ciclo continuará ejecutándose, presumiblemente colgando el hilo. Debe llamar a algo como loop.call_soon_threadsafe(ws.shutdown) antes de unirse al hilo, idealmente esperando el apagado correcto del servidor.

over 4 years ago · Santiago Trujillo Denunciar

0

Tuve este problema para ejecutar un servidor Bokeh en un hilo. Cuando traté de crear el servidor = Servidor ({'/': aplicación}, puerto = 0), obtendría este error. De la documentación de Tornado encontré lo siguiente...

 Class tornado.platform.asyncio.AnyThreadEventLoopPolicy[source]

Política de bucle de eventos que permite la creación de bucles en cualquier subproceso. La política de bucle de eventos asyncio predeterminada solo crea automáticamente bucles de eventos en los subprocesos principales. Otros subprocesos deben crear bucles de eventos explícitamente o asyncio.get_event_loop (y, por lo tanto, IOLoop.current) fallará. La instalación de esta política permite que los bucles de eventos se creen automáticamente en cualquier subproceso, coincidiendo con el comportamiento de las versiones de Tornado anteriores a la 5.0 (o 5.0 en Python 2).

Uso:

 asyncio.set_event_loop_policy(AnyThreadEventLoopPolicy())

http://www.tornadoweb.org/en/stable/asyncio.html#tornado.platform.asyncio.AnyThreadEventLoopPolicy

over 4 years ago · Santiago Trujillo Denunciar

0

En Windows con Python 3.7.3, en lugar de crear el bucle de eventos directamente en el hilo,

Tengo que:

 asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy()) loop = asyncio.new_event_loop() asyncio.set_event_loop(loop)

De lo contrario, el problema persistiría.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda