MagicStack / MagicStack/uvloop
Transport sockets do not support shutdown() method
未关闭
还没有人认领这个 Issue。
need to fix asyncio
- 主要语言
- Cython
- 星标
- 11.9k
- 派生
- 616
- PR 合并指标
- 30 天内没有已合并 PR
描述
- uvloop version: 0.12.2
- Python version: 3.5.3
- Platform: Debian 9
- Can you reproduce the bug with
PYTHONASYNCIODEBUGin env?: yes
An attempt to use shutdown method of transport socket causes following exception:
source_traceback: Object created at (most recent call last):
File "/usr/local/bin/ssh-tarpit", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/dist-packages/ssh_tarpit/__main__.py", line 109, in main
loop.run_until_complete(amain(args, loop))
File "/usr/lib/python3.5/asyncio/streams.py", line 238, in connection_made
self._stream_writer)
File "/usr/local/lib/python3.5/dist-packages/ssh_tarpit/server.py", line 52, in _spawn
self._loop.create_task(self.handler(reader, writer)))
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
result = coro.send(None)
File "/usr/lib/python3.5/asyncio/coroutines.py", line 125, in send
return self.gen.send(value)
File "/usr/local/lib/python3.5/dist-packages/ssh_tarpit/server.py", line 38, in handler
sock.shutdown(socket.SHUT_RD)
File "uvloop/pseudosock.pyx", line 155, in uvloop.loop.PseudoSocket.shutdown
File "uvloop/pseudosock.pyx", line 19, in uvloop.loop.PseudoSocket._na
TypeError: transport sockets do not support shutdown() method
Such behavior is not observed with default event loop.
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
阅读 uvloop/pseudosock.pyx 中的 PseudoSocket.shutdown 以及 traceback 中显示的 _na 路径;首先使用报告中的 Python 和 uvloop 版本重现 socket shutdown 调用。完成标准是 transport socket 能够处理 shutdown 而不会出现报告的 TypeError,并且行为与默认 event loop 一致。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python
- 领域
- networking
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100