Произошло исключение: объект не имеет атрибута «ClientError»

Привет, я пытаюсь обработать исключение, созданное 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.error.ClientError не будет работать, если вы не импортируете binance нет? Возможно, попробуйте импортировать весь пакет binance, чтобы протестировать его и посмотреть, работает ли он.

James Gardner 17.03.2022 21:09

Привет спасибо за ответ к сожалению ничего не изменилось

Alexander Thomsen 17.03.2022 21:20

Просто чтобы уточнить, вы пробовали это с «импортировать binance» и «кроме binance.error.ClientError»?

James Gardner 17.03.2022 21:23

ага, дерьмо, извините, это сработало, кроме binance.error.ClientError с импортом binance. Я думал, что пробовал это раньше. Хочу превратить это в ответ, и я поставлю галочку

Alexander Thomsen 17.03.2022 22:53
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтение документации binance показывает, что правильный способ сослаться на ClientError — это binance.error.ClientError. В своем вопросе вы сказали, что пробовали это, но в предоставленном коде вы импортировали только binance.spot - это не будет включать импорт ClientError.

Попробуйте импортировать весь пакет binance с помощью import binance, а затем снова попробуйте использовать binance.error.ClientError. Это должно сработать для вас.

Другие вопросы по теме