Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

2.5K
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!