gpt4 book ai didi

python - future session : socket connections not closed

转载 作者:行者123 更新时间:2023-11-28 22:44:16 26 4
gpt4 key购买 nike

我正在开发一个 PyQt 程序,它主要从 Internet 收集数据。在此示例中,我尝试从 RSS 网页获取数据。

假设 self.feed 是包含所有文章的 RSS 页面,并且假设“entry”是一篇文章。 “entry.url”是网站上一篇文章的原始页面。

from requests_futures.sessions import FuturesSession

self.session_pages = FuturesSession(max_workers=20)
for entry in self.feed.entries:
future = self.session_pages.get(entry.url, timeout=10)
future.add_done_callback(my_call_back)

我基本上就是这样做的。它嵌入在 PyQt 线程中,我同时运行多个线程,但我认为问题不来自 PyQt。

我的问题是我认为 future 不会关闭连接,即使它们已经完成。我这样检查:

lsof -i | grep "python" | wc -l

losf -i 给出连接中涉及的打开文件。命令的其余部分是计算打开的文件数。这个数字不会停止增长(大约 900),然后我收到以下错误:

(python:28285): GLib-ERROR **: Creating pipes for GWakeup: Too many open files
[1] 28285 trace trap (core dumped) python gui.py

我认为问题出在 future 上,但实际上我不确定。

我试过类似的方法:

self.session_pages.shutdown()

在线程的末尾,但没有用。

你有什么想法吗?

最佳答案

好的,你是对的@jm_____。get() 调用只是对 requests.get 的调用。所以我使用了这里的答案:

Python-Requests close http connection

更具体地说:

future = self.session_pages.get(url, timeout=20, headers={'Connection':'close'})

现在 lsof 表示正常数字。谢谢。

关于python - future session : socket connections not closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29734822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com