1

我正在用 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>

细节:

  1. 加载 html 页面时,python.exe 的内存增加。
  2. 如果重新加载页面,内存会再次增加(在我的情况下每次重新加载 + 5MB)
  3. 重新加载时,龙卷风引发错误(见最后部分)
  4. 如果我播放视频,我可以看到在播放过程中内存正在下降(但总是高于上次重新加载)

如何防止内存泄漏? 谢谢!

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] 
4

0 回答 0