Python http 服务器中的内存泄漏

Memory leak in Python http server

提问人:Dennis L 提问时间:11/12/2023 更新时间:11/12/2023 访问量:25

问:

我正在运行一个接受 base64 编码图像的服务器,它获取这些图像并通过 tflite 模型运行它们。当我开始向服务器发送图像时(有很多图像,因为它们是从网络摄像头源捕获的),内存使用量在使我的计算机崩溃之前达到了顶峰(超过 10GB)。

这是服务器:

class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
    content_length = int(self.headers['Content-Length'])
    post_data = self.rfile.read(content_length).decode('utf-8')
    parsed_data = json.loads(post_data)
    snapshot = tracemalloc.take_snapshot()
    stats = snapshot.statistics('lineno')
    try:
        letter, conf = getHands(parsed_data['base64Img'].split(',')[-1])
        letter = letter.split('\n')[0].split(' ')[-1]
    except:
        letter = ''
        conf = ''
        print("No Hands Detected")
    res = json.loads(f'{{"letter": "{letter}", "conf": "{conf}"}}')
    with open('debug.txt', '+a') as FO:
        for i in stats:
            FO.write(str(i))
            FO.write('\n\n')
    self._set_response(200)
    self.wfile.write(json.dumps(res).encode('utf-8'))

def _set_response(self, status_code):
    self.send_response(status_code)
    self.send_header('Content-type', 'application/json')
    self.end_headers()


def run(server_class=HTTPServer, handler_class=SimpleHTTPRequestHandler, port=5001):
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    print(f"Starting server on port {port}...")
    httpd.serve_forever()

如您所见,我已经在尝试使用 tracemalloc 查找泄漏,但我似乎找不到任何看起来非常可疑的东西。

如果需要任何其他内容,或者泄漏不可能出现在代码的这一部分,我当然也可以提供其他部分。

python http 管理 服务器 内存泄漏

评论


答: 暂无答案