Ipython: 'Excepción no controlada en bucle de eventos' (WinError 995)

Creado en 16 dic. 2019  ·  43Comentarios  ·  Fuente: ipython/ipython

Empecé a usar ipython recientemente. Ahora, a menudo recibo este mensaje al realizar cualquier acción, incluso las más simples, como definir variables:

Unhandled exception in event loop:
  File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\proactor_events.py", line 768, in _loop_self_reading
    f.result()  # may raise
  File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\windows_events.py", line 808, in _poll
    value = callback(transferred, key, ov)
  File "c:\users\USER\appdata\local\programs\python\python38-32\lib\asyncio\windows_events.py", line 457, in finish_recv
    raise ConnectionResetError(*exc.args)

Exception [WinError 995] The I/O operation has been aborted because of either a thread exit or an application request
Press ENTER to continue...

Este mensaje a veces aparece, a veces no, para el mismo comando (como xyz = "hola"). No tengo idea de lo que hice mal. El intérprete normal no tiene este problema. Usando 3.8 e instalado ipython 7.10.2 a través del cmd.

Gracias.

Comentario más útil

Después de investigar un poco, creo que es un error en la implementación de la plataforma Windows del asyncio de Python:

Python 3.8.1 (tags/v3.8.1:1b293b6, 18 de diciembre de 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] en Windows 10, versión 1809 (compilación del sistema operativo 17763.1039)

1) Agregar al archivoLibasyncioproactor_events.py en la función BaseProactorEventLoop._loop_self_reading después de la línea 768 el siguiente código:

766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)

2) Prueba. no tengo mas errores...

EDITAR: puede usar if self._stopping: return en este contexto de código en particular (debería ser un poco más rápido)

EDIT2: error en bugs.python.org y descripción de la causa de este error (encontrado por otra persona): https://bugs.python.org/issue39010#msg362076

Todos 43 comentarios

¿Puede intentar degradar el kit de herramientas de solicitud a 2.x para ver si esta es la causa?

Hice una versión anterior al kit de herramientas de solicitud 2.0.10 y funcionó. Muchas gracias.
¿Podría decir, como soy completamente nuevo en esto, qué cambió?
¿Y podría tener problemas por invertir la versión?

Prompt_toolkit 3 (la biblioteca que permite que IPython tenga edición multilínea y coloración sintáctica) se lanzó justo antes de IPython 7.10; intenta jugar mejor con asyncio eventloop si haces algo de programación concurrente. Hemos hecho todo lo posible para que IPython sea compatible con el kit de herramientas de solicitud 3, pero hay un par de casos extremos en los que es posible que no hayamos pensado.

Todo debería funcionar bien con prompt_toolkit 2.x, e intentaremos averiguar por qué obtuvo el error anterior.

Con su error actual, es difícil saber de dónde proviene exactamente, pero con suerte en las próximas versiones reduciremos el motivo.

¿Alguna idea de cuándo se va a solucionar esto?

Cuando alguien encuentra el tiempo para investigar por qué sucede esto y cuál es la solución; potencialmente alguien con una máquina Windows como VM es particularmente lento.

Desafortunadamente, todos los mantenedores regulares (también conocidos como yo en su mayoría) están haciendo esto en su tiempo libre, lo cual es raro. Tampoco tengo una máquina de Windows.

Si encuentra alguna pista, de secuencias de acciones que siempre desencadenan esto, ayudaría.

Después de investigar un poco, creo que es un error en la implementación de la plataforma Windows del asyncio de Python:

Python 3.8.1 (tags/v3.8.1:1b293b6, 18 de diciembre de 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] en Windows 10, versión 1809 (compilación del sistema operativo 17763.1039)

1) Agregar al archivoLibasyncioproactor_events.py en la función BaseProactorEventLoop._loop_self_reading después de la línea 768 el siguiente código:

766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)

2) Prueba. no tengo mas errores...

EDITAR: puede usar if self._stopping: return en este contexto de código en particular (debería ser un poco más rápido)

EDIT2: error en bugs.python.org y descripción de la causa de este error (encontrado por otra persona): https://bugs.python.org/issue39010#msg362076

MrEightFive Gracias por su solución. Parece que funciona para mí.

@MrEightFive Gracias, acabo de implementar el cambio. Parece estar funcionando bien.

@MrEightFive Parece que también funciona para Python 3.8.2.

Gracias @MrEightFive y @Carreau por sus soluciones, muy apreciadas, tuve el mismo problema.

@MrEightFive Parece que también funciona para Python 3.8.2.

Misma experiencia positiva

Igual, gracias!

Encontrar esto también. @MrEightFive si cree que sabe cuál es la solución, ¿quizás envíe una solicitud de extracción a CPython? :guiño:

@segevfiner
No soy miembro del grupo de desarrollo de CPython, y de acuerdo con su documento, hay un proceso (extenso) de verificación antes de que lo dejen entrar. No vale la pena para mí pasar por una sola solicitud de extracción, aunque lo habría hecho. si fuera mas facil.

En segundo lugar, el informe de error para esto ya existe en bugs.python.org (ver EDIT2 en mi publicación anterior), con un título diferente, pero el motivo de este error se indica exactamente como lo descubrí. Así que supongo que no es necesario duplicar.

En tercer lugar, aunque mi solución funciona, no tengo garantía de que no tenga efectos secundarios (tiene algunas dependencias en cuanto a cómo se implementa el cierre del bucle de eventos en esa versión particular de asyncio, y eso podría cambiar). Ejecuté las pruebas asyncio de CPython (en 3.8.1), y habían pasado, pero nunca investigué más allá de eso. Es mejor si alguien que realmente trabaja en asyncio y está bien versado en el código CPython lo verificaría.

@MrEightFive En realidad es más simple de lo que crees. Simplemente envíe un PR y firme un CLA, luego espere la revisión del código, etc. Como cualquier otro proyecto en GitHub. Aunque CPython a menudo no parece tener suficientes personas revisando las solicitudes de incorporación de cambios, muchas quedan pendientes. Alternativamente, puede simplemente publicar su solución alternativa sugerida en el problema del rastreador de errores de Python. Incluso si no está seguro, puede decirlo en el PR/problema, expresando sus inquietudes al respecto. Esto a menudo ayuda a que alguien más familiarizado analice el problema y verifique la solución u ofrezca una mejor/correcta. Pero es solo una sugerencia, hazlo solo si realmente te apetece.

este error surgió también al usar promt_toolkit, pero la solución: MrEightyFive funciona fantástico, ahorró mucho tiempo, gracias

agregar código a proactor_events.py (como sugirió MrEightFive) no ayudó, pero pip install --upgrade prompt-toolkit==2.0.10 sí. Win10 Python38.

La solución de KyryloKaralyus funcionó para mí. Una cosa a tener en cuenta: primero ejecuté accidentalmente (faltando el 0 al final) pip install --upgrade prompt-toolkit==2.0.1 y esto provocó que el error comenzara a ocurrir sin parar. Tuve que matar la terminal.

agregar código a proactor_events.py (como sugirió MrEightFive) no ayudó, pero pip install --upgrade prompt-toolkit==2.0.10 sí. Win10 Python38.

Eso funcionó para mí.

La solicitud de extracción finalmente se propuso para CPython: bpo-39010: Ignorar el error en el futuro cancelado después del final del ciclo.

Por cierto, es MUY difícil modificar proactor_events.py si Python se instaló desde MS Store.

图片

Me cambié el propietario y me puse a mí y a "todos" en control total. Pero todavía no puedo editar el archivo, incluso en modo seguro y "volver a intentarlo como administrador".

Hice una versión anterior al kit de herramientas de solicitud 2.0.10 y funcionó. Muchas gracias.

pip install prompt-toolkit==2.0.10

Recibo esta excepción con python 3.8.3, ipython 7.13.0, prompt_toolkit 3.0.5

Por cierto, es MUY difícil modificar proactor_events.py si Python se instaló desde MS Store.

La forma más fácil es copiar todo el paquete asyncio en su proyecto y modificarlo allí, luego confiar en Python para que sombree todo el módulo. Las aplicaciones de la Tienda Windows están _muy_ bien protegidas.

Pero también estoy siguiendo el parche de CPython.

Después de investigar un poco, creo que es un error en la implementación de la plataforma Windows del asyncio de Python:

Python 3.8.1 (tags/v3.8.1:1b293b6, 18 de diciembre de 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] en Windows 10, versión 1809 (compilación del sistema operativo 17763.1039)

  1. Agregar al archivoLibasyncioproactor_events.py en la función BaseProactorEventLoop._loop_self_reading después de la línea 768 el siguiente código:

766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)

  1. Prueba. no tengo mas errores...

EDITAR: puede usar if self._stopping: return en este contexto de código en particular (debería ser un poco más rápido)

EDIT2: error en bugs.python.org y descripción de la causa de este error (encontrado por otra persona): https://bugs.python.org/issue39010#msg362076

a mi tambien me funciono!!
¡¡gracias!!

Hice una versión anterior al kit de herramientas de solicitud 2.0.10 y funcionó. Muchas gracias.

pip install prompt-toolkit==2.0.10

Muchas gracias, esto funcionó para mí:

instalación de conda prompt_toolkit=2.0.10

¿Puede intentar degradar el kit de herramientas de solicitud a 2.x para ver si esta es la causa?

Esto también me ayudó, ¡gracias!

pip install --upgrade prompt-toolkit==2.0.10

¡Muchas gracias, finalmente tengo la solución anterior funcionando en mi dispositivo!

Intenté hacer lo siguiente, pero siempre obtenía [Errno 13] Permiso denegado

  1. Agregar al archivoLibasyncioproactor_events.py en la función BaseProactorEventLoop._loop_self_reading después de la línea 768 el siguiente código:

Esto se ha solucionado en 3.9rc2

@ imba-tjd ¿Se volverá a portar a versiones anteriores de Python? (¿O ya lo ha hecho?)

de los errores de python, parece que se ha retroalimentado en 3.8.

Estoy recibiendo el error incluso con 3.9rc2...

¿Puede intentar degradar el kit de herramientas de solicitud a 2.x para ver si esta es la causa?

Esto ayudó, gracias.

Me pregunto si esto ahora está solucionado en Python 3.8.6 y 3.9.

Después de investigar un poco, creo que es un error en la implementación de la plataforma Windows del asyncio de Python:

Python 3.8.1 (tags/v3.8.1:1b293b6, 18 de diciembre de 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] en Windows 10, versión 1809 (compilación del sistema operativo 17763.1039)

  1. Agregar al archivoLibasyncioproactor_events.py en la función BaseProactorEventLoop._loop_self_reading después de la línea 768 el siguiente código:

766....try:
767........if f is not None:
768............f.result() # may raise
...........if self._stopping:
...............raise exceptions.CancelledError("Event loop is stopping")
769........f = self._proactor.recv(self._ssock, 4096)

  1. Prueba. no tengo mas errores...

EDITAR: puede usar if self._stopping: return en este contexto de código en particular (debería ser un poco más rápido)

EDIT2: error en bugs.python.org y descripción de la causa de este error (encontrado por otra persona): https://bugs.python.org/issue39010#msg362076

Recibí este problema con una instalación limpia de Python 3.8.3 usando Anaconda en Windows 10 y la solución de @MrEightFive funcionó perfectamente bien para mí.

pip install --upgrade prompt-toolkit==2.0.10
Esto funcionó para mí en la versión de Windows Anaconda3-2020.11.

Esto (prácticamente) funcionó para mí en Windows 10, Anaconda Individual Edition 2020.11.

Si es otro usuario de Anaconda, es posible que desee mantener esta actualización dentro del entorno conda:
conda install -c conda-forge prompt_toolkit

Lo cual funcionó para mí.

Aparece instantáneamente después de ejecutar un try-except-block , en otros casos es impredecible

Solo quiero agregar el texto de error en alemán, para que más usuarios lo encuentren. (Windows 10 Pro, versión 2004)

Excepción no controlada en el bucle de eventos:
Archivo "c:usersuserappdatalocalprogramspythonpython38libasyncioproactor_events.py", línea 768, en _loop_self_reading
f.result() # puede aumentar
Archivo "c:usersuserappdatalocalprogramspythonpython38libasynciowindows_events.py", línea 808, en _poll
valor = devolución de llamada (transferido, clave, ov)
Archivo "c:usersuserappdatalocalprogramspythonpython38libasynciowindows_events.py", línea 457, en finish_recv
aumentar ConnectionResetError(*exc.args)

Excepción [WinError 995] Der E/A-Vorgang wurde wegen eines Threadendes oder einer Anwendungsanforderung abgebrochen
Presiona ENTER para continuar...

Desafortunadamente

conda install -c conda-forge prompt_toolkit

no solucionó el problema para mí.

@musm , debe especificar prompt_toolkit v2.

conda install -c conda-forge prompt_toolkit=2

Estoy en Anaconda 2020.11 haciendo

conda install -c conda-forge prompt_toolkit=2

Está conduciendo a conflictos masivos:

> conda install -c conda-forge prompt_toolkit=2
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: \
Found conflicts! Looking for incompatible packages.
This can take several minutes.  Press CTRL-C to abort.
Examining qtpy:   1%|▌                                                                 | 3/327 [00:00<00:20, 16.00it/s]\Examining statsmodels:   1%|▌                                                          | 3/327 [00:00<00:20, 16.00it/s]/Examining ipython_genutils:   3%|█▌                                                   | 10/327 [00:07<04:17,  1.23it/s]|Examining pyflakes:   5%|██▉                                                          | 16/327 [00:10<02:19,  2.22it/s]|Examining zope.event:   7%|████▏                                                      | 23/327 [00:13<02:18,  2.20it/s]\Examining vs2015_runtime:  11%|██████                                                 | 36/327 [00:17<02:29,  1.94it/s]\Examining mpir:  15%|█████████▌                                                       | 48/327 [01:32<37:15,  8.01s/it]\Examining krb5:  17%|███████████▎                                                     | 57/327 [01:38<06:35,  1.47s/it]-Examining prometheus_client:  18%|█████████▌                                          | 60/327 [01:42<09:06,  2.05s/it]|Examining cython:  19%|████████████▏                                                  | 63/327 [01:47<08:58,  2.04s/it]-Examining flake8:  21%|█████████████                                                  | 68/327 [02:37<24:45,  5.73s/it]-Examining pytest:  25%|███████████████▊                                               | 82/327 [03:30<30:07,  7.38s/it]-Examining openpyxl:  26%|███████████████▊                                             | 85/327 [03:51<25:16,  6.27s/it]\Examining beautifulsoup4:  32%|█████████████████▎                                    | 105/327 [04:08<03:40,  1.01it/s]|Examining html5lib:  35%|████████████████████▉                                       | 114/327 [04:11<01:34,  2.25it/s]/Examining console_shortcut:  35%|██████████████████▏                                 | 114/327 [04:11<01:34,  2.25it/s]-Examining qt:  37%|████████████████████████▌                                         | 122/327 [04:14<01:09,  2.94it/s]/Examining wheel:  38%|████████████████████████                                       | 125/327 [04:14<00:54,  3.71it/s]|Examining greenlet:  39%|███████████████████████▍                                    | 128/327 [04:18<03:24,  1.03s/it]\Examining bokeh:  40%|█████████████████████████                                      | 130/327 [04:19<02:27,  1.33it/s]|Examining bleach:  40%|████████████████████████▊                                     | 131/327 [04:37<19:29,  5.97s/it]|Examining entrypoints:  40%|███████████████████████                                  | 132/327 [04:39<15:25,  4.75s/it]|Examining et_xmlfile:  40%|███████████████████████▍                                  | 132/327 [04:39<15:25,  4.75s/it]/Examining rtree:  42%|██████████████████████████▏                                    | 136/327 [04:39<07:31,  2.37s/it]-Examining backcall:  42%|████████████████████████▉                                   | 136/327 [04:39<07:31,  2.37s/it]\Examining libssh2:  45%|███████████████████████████▌                                 | 148/327 [04:58<06:13,  2.09s/it]\Examining path:  52%|█████████████████████████████████▍                              | 171/327 [05:54<23:54,  9.19s/it]/Examining pywavelets:  53%|██████████████████████████████▌                           | 172/327 [05:55<16:51,  6.53s/it]-Examining importlib_metadata:  54%|███████████████████████████▏                      | 178/327 [06:06<07:34,  3.05s/it]-Examining prompt_toolkit=2:  55%|████████████████████████████▍                       | 179/327 [06:07<07:56,  3.22s/it]-Examining seaborn:  56%|██████████████████████████████████▏                          | 183/327 [06:17<06:30,  2.71s/it]\Examining jupyterlab_widgets:  57%|████████████████████████████▎                     | 185/327 [06:21<05:57,  2.52s/it]|Examining jdcal:  58%|████████████████████████████████████▍                          | 189/327 [06:21<02:55,  1.27s/it]-Examining widgetsnbextension:  59%|█████████████████████████████▌                    | 193/327 [06:22<01:18,  1.70it/s]-Examining multipledispatch:  64%|█████████████████████████████████▍                  | 210/327 [07:07<03:36,  1.85s/it]-Examining yaml:  68%|███████████████████████████████████████████▍                    | 222/327 [07:19<01:11,  1.46it/s]-Examining libxslt:  70%|██████████████████████████████████████████▌                  | 228/327 [07:31<03:34,  2.17s/it]\Examining python-jsonrpc-server:  70%|████████████████████████████████▉              | 229/327 [07:31<02:30,  1.54s/it]|Examining typed-ast:  71%|█████████████████████████████████████████▊                 | 232/327 [07:32<01:01,  1.54it/s]\Examining @/win-64::__archspec==1=x86_64:  71%|██████████████████████████▉           | 232/327 [07:32<01:01,  1.54it/s]|Examining urllib3:  73%|████████████████████████████████████████████▍                | 238/327 [07:42<03:30,  2.36s/it]/Examining backports:  73%|███████████████████████████████████████████                | 239/327 [07:47<04:20,  2.96s/it]\Examining mccabe:  76%|███████████████████████████████████████████████▏          

Hola @musm , esta es una de las desventajas de usar la distribución completa de Anaconda. Hay tantos módulos que puede ser difícil resolver todas sus dependencias simultáneamente si se desvía de la distribución provista. En su lugar, puede probar Miniconda, que es Conda, pero sin los módulos preinstalados. Con él, creas entornos para incluir solo los módulos que necesitas para tu proyecto.

No he probado esto, pero es posible que también pueda hacerlo sin tener que desinstalar Anaconda e instalar Miniconda en su lugar. IE Cree un nuevo entorno desde cero que incluya solo módulos específicos. Pruébelo con un comando como el siguiente (edite los nombres de los módulos para incluir lo que realmente necesita).

conda create -n <myenv> python ipython prompt_toolkit=2 jupyter pandas numpy scipy scikit-learn matplotlib
¿Fue útil esta página
0 / 5 - 0 calificaciones