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()

video.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