MagicStack / MagicStack/uvloop
Repeating calls to connect_write_pipe with sys.stdout as a stream lead to FileExistsError exception
Dieses Issue hat noch niemand übernommen.
- 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
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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