EC2服务器中ccxt.load_markets()运行失败求助
EC2服务器调用CCXT load_markets()失败的解决办法
问题详情
在EC2服务器运行CCXT的load_markets()函数时返回451错误,本地PC环境运行相同代码则正常。相关环境信息:
- Python版本:3.7.15
- CCXT版本:2.2.95
- 运行代码:
import ccxt import time b= ccxt.binance() print(b.milliseconds()) print(b.nonce()) print(b.load_markets())
错误信息(翻译后)
1671012133696 1671012133696 Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/ccxt/base/exchange.py", line 621, in fetch response.raise_for_status() File "/home/ec2-user/.local/lib/python3.7/site-packages/requests/models.py", line 953, in raise_for_status raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 451 Client Error: 对应地址: https://api.binance.com/api/v3/exchangeInfo 在处理上述异常期间,又发生了新的异常: Traceback (most recent call last): File "test.py", line 15, in <module> print(b.load_markets()) File "/usr/local/lib/python3.7/site-packages/ccxt/base/exchange.py", line 1448, in load_markets markets = self.fetch_markets(params) File "/usr/local/lib/python3.7/site-packages/ccxt/binance.py", line 1613, in fetch_markets response = getattr(self, method)(query) File "/usr/local/lib/python3.7/site-packages/ccxt/base/exchange.py", line 501, in inner return entry(_self, **inner_kwargs) File "/usr/local/lib/python3.7/site-packages/ccxt/binance.py", line 5854, in request response = self.fetch2(path, api, method, params, headers, body, config, context) File "/usr/local/lib/python3.7/site-packages/ccxt/base/exchange.py", line 2782, in fetch2 return self.fetch(request['url'], request['method'], request['headers'], request['body']) File "/usr/local/lib/python3.7/site-packages/ccxt/base/exchange.py", line 639, in fetch self.handle_http_status_code(http_status_code, http_status_text, url, method, http_response) File "/usr/local/lib/python3.7/site-packages/ccxt/base/exchange.py", line 1741, in handle_http_status_code raise ErrorClass(self.id + ' ' + method + ' ' + url + ' ' + codeAsString + ' ' + reason + ' ' + body) ccxt.base.errors.ExchangeNotAvailable: binance GET https://api.binance.com/api/v3/exchangeInfo 451 { "code": 0, "msg": "根据服务条款中的'b. 资格'条款,受限地区无法访问服务。如果认为收到此消息有误,请联系客服。" }
问题原因
Binance的地域访问限制策略拦截了EC2服务器的IP地址,导致无法访问其API接口。本地环境IP不在限制列表中,因此可以正常运行。
解决方案
- 配置代理:在EC2服务器上设置合规的代理服务,将API请求转发到Binance允许访问的地区IP。
- 更换EC2区域:选择Binance未限制的AWS区域(如新加坡、东京等)重新创建EC2实例。
- 账号合规验证:确认Binance账号注册地区与服务器所在地区是否匹配,若存在不符可联系Binance客服核实权限。
内容的提问来源于stack exchange,提问作者zawoon
相关产品推荐
相关产品推荐

