Я пытаюсь сделать несколько звонков на API Discogs, и я сталкиваюсь с ограничением скорости. Я хочу обернуть мой объект Discog в блок try / Кроме того, чтобы перехватить этот предел, поспать и продолжить работу с программой. У меня проблема в том, что функция initiate_discog_object () не перехватывает ошибки при вызове, как я могу заставить ее перехватывать ошибки? Я могу обойтись, вставляя try / block вокруг кода каждый раз, когда он вызывается, но я знаю, что это не pythoni c.
Это не-pythoni c реализация
def initiate_discog_object():
return discogs_client.Client('my app name 1.0',
consumer_key='myconsumerkey',
consumer_secret='myconsumersecret',
token='mytoken',
secret='mysecret')
while True:
try:
initiate_discog_object().release('13127671')
except HTTPError:
print('Making Requests Too Quickly! Sleeping for 5 seconds!')
sleep(5)
Это реализация Pythoni c / Что я хочу сделать.
def initiate_discog_object():
while True:
try:
return discogs_client.Client('my app name 1.0',
consumer_key='myconsumerkey',
consumer_secret='myconsumersecret',
token='mytoken',
secret='mysecret')
except HTTPError:
print('Sleeping for 5 seconds!')
sleep(5)
Так что, когда такая функция является run:
while True:
print(initiate_discog_object().release('13127671'))
Программа спит, а затем пытается снова. Это ошибка, которую я получаю:
Traceback (most recent call last):
File "C:/Users/Administrator.DELL-26/projects/blah/blah/discography_crawler.py", line 182, in <module>
print(initiate_discog_object().release('13127671'))
File "C:\Python37\lib\site-packages\discogs_client\models.py", line 497, in __repr__
return self.repr_str('<Release {0!r} {1!r}>'.format(self.id, self.title))
File "C:\Python37\lib\site-packages\discogs_client\models.py", line 31, in __get__
value = instance.fetch(self.name)
File "C:\Python37\lib\site-packages\discogs_client\models.py", line 245, in fetch
self.refresh()
File "C:\Python37\lib\site-packages\discogs_client\models.py", line 211, in refresh
data = self.client._get(self.data['resource_url'])
File "C:\Python37\lib\site-packages\discogs_client\client.py", line 123, in _get
return self._request('GET', url)
File "C:\Python37\lib\site-packages\discogs_client\client.py", line 120, in _request
raise HTTPError(body['message'], status_code)
discogs_client.exceptions.HTTPError: 429: You are making requests too quickly.
Я искал вокруг, возможно, я не знаю, как правильно сформулировать вопрос, но я не могу найти ответ, любая помощь приветствуется.