我正在用 tornado 编写一个静态文件服务器,但是当它提供 html5 视频时内存泄漏,代码非常简单。
服务器.py
import tornado.ioloop
import tornado.web
if __name__ == "__main__":
application = tornado.web.Application([
(r"/(.*)", tornado.web.StaticFileHandler, {'path': '.'}),
])
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
视频.html
<html>
<body>
<video src="demo.mp4"></video>
</body>
</html>
细节:
- 加载 html 页面时,python.exe 的内存增加。
- 如果重新加载页面,内存会再次增加(在我的情况下每次重新加载 + 5MB)
- 重新加载时,龙卷风引发错误(见最后部分)
- 如果我播放视频,我可以看到在播放过程中内存正在下降(但总是高于上次重新加载)
如何防止内存泄漏? 谢谢!
WARNING:tornado.general:error on read
Traceback (most recent call last):
File "D:\PROJECTS\Working\PyF5\tornado\iostream.py", line 391, in _handle_read
if self._read_to_buffer() == 0:
File "D:\PROJECTS\Working\PyF5\tornado\iostream.py", line 447, in _read_to_buffer
chunk = self.read_from_fd()
File "D:\PROJECTS\Working\PyF5\tornado\iostream.py", line 683, in read_from_fd
chunk = self.socket.recv(self.read_chunk_size)
error: [Errno 10053]