当前位置: 首页 > 知识库问答 >
问题:

为什么Python请求总是给我这个错误?“远程主机强制关闭了现有连接”

李弘光
2023-03-14

我正试图每十秒钟向Binance api(加密货币交易所)发送一个请求,以获取特定加密货币符号的最新价格。但是,在5到20小时之后,它会停止工作并抛出此错误:

回溯(最近的最后一次调用):文件“C:\User\nrspa\AppData\Local\Program\Python\Python310\lib\site-包\urllib3\connectionpool.py”,第703行,在urlopenhttplib_response=self中。_make_request(文件“C:\User\nrspa\AppData\Local\Program ms\Python\Python310\lib\site-包\urllib3\connectionpool.py”,第386行,_make_request。_validate_conn(conn)文件“C:\User\nrspa\AppData\Local\Python\Python310\lib\site-包\urllib3\connectionpool.py”,第1040行,在validate_connconn.connect()文件“C:\用户\nrspa\AppData\本地\程序\Python\Python310\lib\site-包\urllib3\connection.py”,第416行,在连接self.sock=ssl_wrap_socket(文件“C:\用户\nrspa\AppData\本地\程序\Python\Pyth"C:\Users\nrspa\AppData\本地\程序\Python\Python310\lib\site-包\urllib3\util\ssl.py",第493行,_ssl_wrap_socket_impl返回ssl_context.wrap_socket(sock,server_hostname=server_hostname)File"C:\Users\nrspa\AppData\本地\程序\Python\Python310\lib\ssl.py",第512行,wrap_socket返回self.sslsocket_class。_create(File"C:\Users\nrspa\AppData\本地\程序\Python\Python310\lib\ssl.py",第1070行,_createself.do_handshake()File"C:\Users\nrspa\AppData\本地\程序\Python\Python310\lib\ssl.py",第1341行,do_handshake。_sslobj.do_handshake()ConnectionResetError:[WinError 10054]远程主机强制关闭现有连接

在处理上述异常时,发生了另一个异常:

回溯(最近的最后一次调用):文件“C:\User\nrspa\AppData\Local\程序\Python\Python310\lib\site-包\请求\adapters.py”,第440行,在发送resp=conn.urlopen(文件“C:\用户\nrspa\AppData\本地\程序\Python\lib\站点包\urllib3\connectionpool.py”,第785行,在urlopen重试=retries.increment(文件“C:\用户\nrspa\AppData\本地\程序\Python\Python310\lib\站点包\urllib3\util\retry.py”,第550行,增量提升six.reraise(键入(错误),错误,_stacktrace)文件“C:\用户\nrspa\AppData\本地\程序\Python\Python310\lib\站点包\urllib3\包\six.py”,第769行,在重新提升value.with(tb)文件“C:\用户\nrspa\AppData\本地\程序在urlopenhttplib_response=自己。_make_request(文件“C:\User\nrspa\AppData\Local\编程\Python\Python310\lib\site-包\urllib3\connectionpool.py”,第386行,_make_request。_validate_conn(conn)文件“C:\User\nrspa\AppData\Local\Program ms\Python\Python310\lib\site-包\urllib3\connectionpool.py”,第1040行,validate_connconn.connect()文件“C:\User\nrspa\AppData\Local\Python\Python310\lib\site-包\urllib3\connection.py”,第416行,连接self.sock=ssl_wrap_socket(文件“C:\User\nrspa\AppData\Local ms\Python\Python310\lib\site-包\urllib3\util\ssl.py”,第449行,ssl_wrap_socketssl_sock=ssl_wrap_socket_impl(文件“C:\用户\nrspa\AppData\本地\程序\\Python\Python310\lib3=server_hostname)文件"C:\用户\nrspa\AppData\本地\程序\Python\Python310\lib\ssl.py",第512行,wrap_socket返回self.sslsocket_class。_create(文件"C:\用户\nrspa\AppData\本地\程序\Python\Python310\lib\ssl.py",第1070行,_createself.do_handshake()文件"C:\用户\nrspa\AppData\本地\程序\Python\Python310\lib\ssl.py",第1341行,do_handshake。_sslobj.do_handshake()urllib3.exceptions.协议错误:('连接中止。',ConnectionResetError(10054,'现有连接被远程主机强制关闭',无,10054,无))

在处理上述异常时,发生了另一个异常:

回溯(最近一次调用):文件“c:\Users\nrspa\Desktop\CryptoBot v2.6(24h)\main(market).py”,第113行,在CB中。main()文件“c:\Users\nrspa\Desktop\CryptoBot v2.6(24小时)\main(market).py”,第68行,在main self中。数组=自身。create\u array()文件“c:\Users\nrspa\Desktop\CryptoBot v2.6(24小时)\main(market).py”,第46行,在create\u array self中。大堆附加(self.get\u price())文件“c:\Users\nrspa\Desktop\CryptoBot v2.6(24h)\main(market).py”,第22行,在get\u price response=requests中。get(url,headers={“User Agent”:“Mozilla/5.0(X11;Linux x86\U 64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/51.0.2704.103 Safari/537.36”})文件“C:\Users\nrspa\AppData\Local\Programs\Python\Python310\lib\site packages\requests\api.py”,第75行,在请求返回会话的get return request('get',url,params=params,**kwargs)文件“C:\Users\nrspa\AppData\Local\Programs\Python\Python310\lib\site packages\requests\api.py”第61行中。请求(method=method,url=url,**kwargs)文件“C:\Users\nrspa\AppData\Local\Programs\Python\Python310\lib\site packages\requests\sessions.py”,第529行,请求响应=self。send(prep,**send\u kwargs)文件“C:\Users\nrspa\AppData\Local\Programs\Python\Python310\lib\site packages\requests\sessions.py”,第645行,在send r=adapter中。发送(请求,**kwargs)文件“C:\Users\nrspa\AppData\Local\Programs\Python\Python310\lib\site packages\requests\adapters.py”,第501行,发送引发ConnectionError(err,request=request)请求。例外情况。ConnectionError:(“Connection aborted.”,ConnectionResetError(10054,“现有连接被远程主机强制关闭”,None,10054,None))

还请注意,这是我的代码(它是类的一部分),它每10秒从Binance获取一次价格,直到达到所需的数组长度,此时它处理数据:

import json
import requests
import time

def get_price(self):
    url = f"https://api.binance.com/api/v3/ticker/price?symbol={self.symbol}" 
    response = requests.get(url, headers = {"User-Agent" : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"})
    json_response = json.loads(response.text)
    return float(json_response['price'])

def create_array(self):
    i = len(self.array)
    if i < self.array_len:
        while i < self.array_len:
            time.sleep(self.time_interval)
            self.array.append(self.get_price())
            i = i + 1
        return self.array
    else:
        main()

共有1个答案

杨腾
2023-03-14

该问题可能是由双方之间的“分歧”引起的。可能是连接超时或服务器关闭了它。

修复方法是捕获此异常并再次打开连接。

 类似资料:
  • 正如我前面所说的,我能够在visual studio的调试模式下使其正确工作,但一旦创建了可执行文件,我就不能再读取网页了。如有任何帮助,我们将不胜感激。是什么导致了这个问题?

  • 问题内容: 我正在使用他们的托管页面集成功能与替代付款进行集成。他们的C#SDK目前没有可用的集成,但是您可以看到它非常简单,我制作了一个小类来发送发布请求并获取JSON响应。 我测试了我在PostMan和cURL上发送的json对象,它们都可以工作,也可以使用身份验证标头,所以我认为它们不是问题。这是我的课程的构造函数: 以及我发布数据的方法: 然后,我在PostAsync行收到此错误:。这是错

  • 当使用Photobucket API时,它说... [SocketException(0x2746):远程主机强制关闭了现有连接]System.Net.Sockets.Socket.Receive(Byte[]缓冲区,Int32偏移量,Int32大小,SocketFlags SocketFlags)+139 System.Net.Sockets.NetworkStream.Read(Byte[]缓

  • 我正在尝试使用Azure Blob存储。我成功上传了一些图像,但突然我得到了错误: 远程主机强制关闭了现有连接 我研究了一下,每当我试图检查Blob容器是否存在时,都会引发异常。 这是我的代码: BlobClient getter属性:(注意,我已将连接字符串中的敏感数据标记为**) 抛出异常的实际代码: 准确地说,异常发生在我检查容器是否存在的行。 我不知道怎么了。我确信连接字符串是正确的(我复

  • 有人能帮我解决以下异常吗, 我正在使用Oracle OEPE eclipse和weblogic 12c。在我开始开发移动应用程序之前,它工作得很好。 我在eclipse中安装了以下插件。1.Android工具2。JBoos混合移动工具 我的电脑1上安装了以下开源软件。节点Js 2。科尔多瓦3。Ripple仿真器