MagicStack / MagicStack/uvloop

Repeating calls to connect_write_pipe with sys.stdout as a stream lead to FileExistsError exception

Offen
#262 8 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

help wanted need more info
Vorherrschende Sprache
Cython
Sterne
11.9k
Forks
616
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

* **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 `PYTHONASYNCIODEBUG` in env?**: yes

Hello, this example doesn't work with uvloop.
```python
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
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

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere das Beispiel, indem du wiederholt loop.connect_write_pipe mit sys.stdout aufrufst, und untersuche anschließend die Einstiegspunkte des Stack-Traces in uvloop/loop.pyx und uvloop/handles/pipe.pyx. Vergleiche die Pfade zum Öffnen der ersten und der zweiten Pipe und füge Regressionstestabdeckung hinzu; erledigt ist die Aufgabe, wenn die wiederholten Aufrufe auf den gemeldeten Plattformen ohne FileExistsError abgeschlossen werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
networking
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.