交易所接口本地化快速研究时挂梯子报错 Max retries exceed with url 问题处理

Author: 小七, Created: 2022-11-30 06:38:03, Updated: 2022-11-30 09:45:01

解决问题花费了一些时间,以下为遇到相同问题的同学节约时间

因FMZ平台程序启动和报错日志检查不方便

所以本地用Python访问交易所接口,以便做快速的验证,访问币安、OK、火币均遇到 【…Max retries exceed with url…】的问题。

遇到问题的环境

  • 挂了梯子并且浏览器可以访问交易所网站,并且打开行情接口可获得结果,如 https://api.binance.com/api/v3/ticker/price

  • 使用curl https://api.binance.com/api/v3/ticker/price 可以获得结果,如果curl无法请求或请求失败,那就是梯子的网络没配置好(没有让桌面程序也走代理 需做相关配置)

  • 以上,在浏览器和curl均可正常访问的情况下,使用如下代码

import requests

response = requests.get("http://api.binance.com/api/v3/ticker/price")
print(response.text)

解决方案

在Python代码请求中加入代理的地址,指定走网络代理,但是这块有个问题是本地测试需要代理,而部署到FMZ或者云服务器中可能不需要代理,需在部署时删除相关代码。

proxies = {
          "http":"http://127.0.0.1:33210", # 改为自己本地梯子代理的端口号
          "https":"http://127.0.0.1:33210" # 改为自己本地梯子代理的端口号
      }

response = requests.get("http://api.binance.com/api/v3/ticker/price", proxies=proxies)
print(response.text)

以上,仅为个人尝试,如不适用,请谅解,谢谢。


More

发明者量化 感谢分享, python本身很强大,如果是其它语言可以直接使用HttpQuery支持走代理分发 ` HttpQuery("socks5://127.0.0.1:8889/http://www.baidu.com/") ` 如果想加入自适应,可以先用Dial判断代理服务器是否打开,如果没有打开,是线上环境,可以不用加代理协议前缀

小七 学习了,感谢。