gpt4 book ai didi

python 3 : ResourceWarning Unclosed

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:40 25 4
gpt4 key购买 nike

我有一个用 Python 编写的 Reddit 机器人,有时我会收到以下错误:

sys:1: ResourceWarning: unclosed ssl.SSLSocket fd=4, family=AddressFamily.AF_INET, type=2049, proto=6, laddr=('192.168.1.113', 55513), raddr=('198.41.209.140', 443)>

192.168.1.113 是我的本地 IP,198.41.209.140 显然是 CloudFlare 的 IP

我有时也会收到以下错误,这让我认为问题与 SSL 有关?

Error EOF occurred in violation of protocol (_ssl.c:598)

我该如何解决这个问题?

编辑:如何查看我的代码的哪一部分导致了这个问题?我在 try/except 中有一个异常,将所有异常打印为:

except Exception as e:
print("Login/API Error", e)

但是我得到的所有错误都没有这个,这意味着它不是异常(exception)?

最佳答案

我没有在自己的代码中使用套接字,所以下面是基于我的一般 Python 知识。

套接字文档没有说 socket.socket 实例是上下文管理器,但该类具有必需的 __enter____exit__方法。两者都是标准的、最小的实现。您可能希望继承 socket 或 SSLSocket 以在 __exit__ 中执行更多操作,例如打印您的替代品以进行回溯。但首先,您需要查看完整的回溯。子类 SSLSocket 继承了这两种方法。由于 SSLSocket “包装”了一个套接字,显然有两个对象需要关注。因此,对于代码的顶层结构,我将从以下内容(显然未经测试)开始:

<preliminary code>
with socket.socket(...) as sock # or other socket-returning function
<more preparation>
with ssl.wrap_socket(sock, ...) as SSLsock # or the context function
<use SSLsock to communicate>

您收到的错误消息应该以 SSLEOFError 为前缀。是吗?文档说“当 SSL 连接突然终止时引发的 SSLError 的子类。通常,遇到此错误时,您不应尝试重用底层传输。”这绝对是一个异常(exception)。

>>> issubclass(ssl.SSLEOFError, Exception)
True

什么可能会促使 Cloudfare ‘突然’终止连接?协议(protocol)处理中的错误; ssl.py 中的错误?您的机器人是否以某种方式违反了服务条款?

如果你不能在这里得到你需要的所有答案,我会尝试 python-list,也可以作为新闻组 gmane.comp.python.general 访问 >news.gmane.org。它的参与者具有网络经验。

关于 python 3 : ResourceWarning Unclosed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518251/

25 4 0
文章推荐: python - 乘以多索引 Pandas 系列和 DataFrame
文章推荐: javascript - 如何使
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com