私は 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()
video.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]