MagicStack / MagicStack/uvloop
Repeating calls to connect_write_pipe with sys.stdout as a stream lead to FileExistsError exception
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Cython
- Estrellas
- 11.9k
- Forks
- 616
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
- uvloop version: 0.11.3, 0.12.2, 0.13.0rc1
- Python version: 3.6, 3.7
- Platform: linux, macos
- Can you reproduce the bug with
PYTHONASYNCIODEBUGin env?: yes
Hello, this example doesn't work with uvloop.
import asyncio
import sys
import uvloop
uvloop.install()
loop = asyncio.get_event_loop()
async def main():
transport, protocol = await loop.connect_write_pipe(
asyncio.Protocol, sys.stdout
)
print("okay")
transport2, protocol2 = await loop.connect_write_pipe(
asyncio.Protocol, sys.stdout
)
print("okay")
loop.run_until_complete(main())
okay
Traceback (most recent call last):
File "uvl.py", line 20, in <module>
loop.run_until_complete(main())
File "uvloop/loop.pyx", line 1451, in uvloop.loop.Loop.run_until_complete
File "uvl.py", line 16, in main
asyncio.Protocol, sys.stdout
File "uvloop/loop.pyx", line 2703, in connect_write_pipe
File "uvloop/loop.pyx", line 2698, in uvloop.loop.Loop.connect_write_pipe
File "uvloop/handles/pipe.pyx", line 170, in uvloop.loop.WriteUnixTransport._open
File "uvloop/handles/pipe.pyx", line 29, in uvloop.loop.__pipe_open
FileExistsError: [Errno 17] File exists
please, see discussion here https://github.com/B2W-BIT/aiologger/issues/42#issuecomment-457283504
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce el ejemplo usando llamadas repetidas a loop.connect_write_pipe con sys.stdout y, después, inspecciona los puntos de entrada del stack trace en uvloop/loop.pyx y uvloop/handles/pipe.pyx. Compara las rutas de apertura de la primera y la segunda tubería y añade cobertura de regresión; se considera terminado cuando las llamadas repetidas se completan sin FileExistsError en las plataformas indicadas.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- networking
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 35/100