Привет, я пытаюсь обработать исключение, созданное Binance, и вывести из функции ошибку, чтобы я мог сообщить пользователю, что детали API не работают.
Источник: https://github.com/binance/binance-connector-python
Я получаю эту ошибку уже в строке для попытки:
'Spot' object has no attribute 'ClientError'
Мне непонятно, как обрабатывать ClientError, выброшенный Binance. Я пробовал другие комбинации, такие как добавление binance.error.ClientError
Код ниже
import requests
import json
from binance.spot import Spot
def verify_api_key(api_key, api_secret):
# api key/secret are required for user data endpoints
client = Spot(key=api_key, secret=api_secret)
# Get account and balance information
try:
return client.api_key_permissions()
except client.ClientError as e:
raise e
print(verify_api_key("test","test"))
Как выглядит ошибка Binance
raise ClientError(status_code, err["code"], err["msg"], response.headers)
binance.error.ClientError: (400, -2008, 'Invalid Api-Key ID.', {'Content-Type': 'application/json;charset=UTF-8', 'Content-Length': '42', 'Connection': 'keep-alive', 'Date': 'Wed, 16 Mar 2022 20:23:04 GMT', 'Server': 'nginx', 'Strict-Transport-Security': 'max-age=31536000; includeSubdomains', 'X-Frame-Options': 'SAMEORIGIN', 'X-Xss-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Content-Security-Policy': "default-src 'self'", 'X-Content-Security-Policy': "default-src 'self'", 'X-WebKit-CSP': "default-src 'self'", 'Cache-Control': 'no-cache, no-store, must-revalidate', 'Pragma': 'no-cache', 'Expires': '0', 'X-Cache': 'Error from cloudfront', 'Via': '1.1 3ddbbcaacc1ba68ddfab04ef45c3ca98.cloudfront.net (CloudFront)', 'X-Amz-Cf-Pop': 'MUC50-P1', 'X-Amz-Cf-Id': 'hBKLvd1lmcWNrI97jwGEnT2PH0jOXlvkMOkdfftTkAhqEkFEx8Xdaw=='})
Привет спасибо за ответ к сожалению ничего не изменилось
Просто чтобы уточнить, вы пробовали это с «импортировать binance» и «кроме binance.error.ClientError»?
ага, дерьмо, извините, это сработало, кроме binance.error.ClientError с импортом binance. Я думал, что пробовал это раньше. Хочу превратить это в ответ, и я поставлю галочку
Чтение документации binance показывает, что правильный способ сослаться на ClientError — это binance.error.ClientError
. В своем вопросе вы сказали, что пробовали это, но в предоставленном коде вы импортировали только binance.spot
- это не будет включать импорт ClientError.
Попробуйте импортировать весь пакет binance с помощью import binance
, а затем снова попробуйте использовать binance.error.ClientError
. Это должно сработать для вас.
binance.error.ClientError не будет работать, если вы не импортируете binance нет? Возможно, попробуйте импортировать весь пакет binance, чтобы протестировать его и посмотреть, работает ли он.