MagicStack / MagicStack/uvloop
Repeating calls to connect_write_pipe with sys.stdout as a stream lead to FileExistsError exception
まだ誰も着手していません。
- 主要言語
- Cython
- スター
- 11.9k
- フォーク
- 616
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
* **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
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
sys.stdout を使用して loop.connect_write_pipe を繰り返し呼び出すことで例を再現し、その後 uvloop/loop.pyx と uvloop/handles/pipe.pyx の stack-trace のエントリポイントを調査します。1 回目と 2 回目の pipe のオープン経路を比較し、回帰テストのカバレッジを追加します。完了の条件は、報告されたプラットフォーム上で繰り返し呼び出しが FileExistsError なしに完了することです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- python
- 領域
- networking
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 明確に書かれている
- 初心者へのやさしさ
- 35/100