【问题标题】:How do I slow API calls for Binance API如何减慢 Binance API 的 API 调用速度
【发布时间】:2021-05-01 01:00:21
【问题描述】:

我必须在我的代码中添加什么才能停止遇到 API 速率限制错误?我相信我遇到了这个错误,因为我的脚本对 Binance 服务器进行了许多 API 调用。

我的代码是:

from binance.client import Client
client = Client(api_key=***, api_secret=***, tld='us')

下面的客户端模块使用请求库。 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."))

【问题讨论】:

标签: python rest python-requests binance ratelimit


【解决方案1】:

你试过装饰器吗?在我看来,这是解决您的问题的一种非常干净漂亮的方法:-)

这里是一个例子:

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"))

【讨论】:

    【解决方案2】:

    您可以在请求之间使用time.sleep 简单地添加延迟。

    from time import sleep
    
    # Adds a delay of 3 seconds
    sleep(3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 2018-06-28
      • 2017-02-28
      相关资源
      最近更新 更多