问题描述
我必须在代码中添加什么才能停止遇到 API 速率限制错误?我相信我遇到了这个错误,因为我的脚本对币安服务器进行了许多 API 调用。
我的代码是:
from binance.client import Client
client = Client(api_key=***,api_secret=***,tld='us')
下面的客户端模块使用 requests 库。 Client 构造函数有一个可选参数:requests_params=None
并允许您添加“用于所有调用的请求参数字典”(引用自文档。)
我已经浏览了 requests 文档,但找不到任何解决此问题的方法。我找到了另一个名为 ratelimit 的库,但我不知道如何有效地通过 client() 传递它。
我收到的错误信息是:
requests.exceptions.SSLError: HTTPSConnectionPool(host='api.binance.us',port=443): Max retries exceeded with url: /api/v1/ping (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available."))
解决方法
您可以简单地在请求之间使用 time.sleep
添加延迟。
from time import sleep
# Adds a delay of 3 seconds
sleep(3)
,
你试过装饰器吗?在我看来,这是解决您问题的一种非常干净漂亮的方式:-)
这里有一个例子:
import requests
from functools import wraps
import time
def delay(sleep_time:int):
def decorator(function):
@wraps(function)
def wrapper(*args,**kwargs):
time.sleep(sleep_time)
print(f"Sleeping {sleep_time} seconds")
return function(*args,**kwargs)
return wrapper
return decorator
@delay(5)
def get_data(url:str) -> requests.models.Response:
return requests.get(url)
while True:
print(get_data("https://www.google.com"))