首页 > 解决方案 > Linux中的内存泄漏,但不是Windows

问题描述

我正在制作一个脚本,它将从第三方 Web 套接字接收域,将它们导入队列,然后将 HTTP 请求发送到域以查明它们是否可访问。但是,因为我正在以如此高的速率从 Web 套接字接收域,所以我试图在脚本中实现线程化,以使多个线程发送 HTTP 请求以跟上我接收它们的速率。但是,当我在我的 Linux 机器上运行脚本时,我遇到了我的 Windows 机器上不存在的内存泄漏问题,我理想情况下希望它在我的 Linux 机器上运行。

到目前为止,我已经尝试确保我的 Linux 机器使用相同或更高版本的 Python(3.8.3),并尝试了多个 HTTP 模块(请求、urllib3 和 HTTP 客户端),但它们都表现出相同的问题。我希望有人能够提供帮助,因为我在过去几周试图自己解决这个问题,但无法提出任何问题,受影响的代码是这样的:

import http.client
import threading
from queue import Queue

enclosure_queue = Queue(maxsize=500)

# Thread that adds the domains acquired from the web socket into the queue 

def scan_domain(q):
    while True:
        domain = q.get()
        try:
            conn = http.client.HTTPSConnection(domain)
            conn.request("GET", "/")
            r1 = conn.getresponse()
            response = r1.read()
            conn.close()
            domain = "http://" + domain
            result = response.decode()
            print("Connected to - " + domain)
            q.task_done()
        except:
            print("Unable to connect to - " + domain)
            q.task_done()

for i in range(30):
    t = threading.Thread(target=scan_domain, args=(enclosure_queue,))
    t.setDaemon(True)
    t.start()

我省略了将域添加到队列中的线程,因为它可能包含敏感信息,但是,我在不同的脚本中使用了该确切部分的代码,该脚本未显示此问题,因此该部分 100% 不是问题。

标签: pythonpython-3.xmemory-leakspython-requests

解决方案


推荐阅读