В методе t.cursor() исключение из библиотеки Twython выбрасывается за небольшой процент идентификаторов. Однако всякий раз, когда возникает исключение, фактическая строка в моем коде, где она была выбрана, представляет собой цикл for, который приходит после блока try/except, который предотвращает вызов continue
.Исключение появляется в неправильном месте
Каким образом исключение может быть выбрано в блоке try, а не обнаружено за исключением блока, а затем появится позже в течение некоторого (в основном) несвязанного кода?
И да, это ошибка 401, но это только API Twitter, возвращающий неправильный код. На самом деле я правильно аутентифицируюсь. Я также знаю, что могу просто переместить блок except после цикла for, но я просто хочу знать, как это может произойти вообще.
from twython import Twython
t = Twython(...)
# ...
for id in ids:
try:
# exception is truly caused by the following line
followers = t.cursor(t.get_followers_ids, id=id)
except:
# this block is never run
print("Exception with user " + str(id))
continue
# this line actually throws the exception, inexplicably
for follower_id in followers:
values.append((follower_id, id, scrape_datetime))
# ...
отслеживающий:
Traceback (most recent call last):
File "/root/twitter/nightly.py", line 5, in <module>
t.get_followers(t.current_tweeters)
File "/root/twitter/tweets.py", line 81, in get_followers
for follower_id in followers:
File "/usr/local/lib/python3.3/dist-packages/twython-3.0.0-py3.3.egg/twython/api.py", line 398, in cursor
content = function(**params)
File "/usr/local/lib/python3.3/dist-packages/twython-3.0.0-py3.3.egg/twython/endpoints.py", line 212, in get_followers_ids
return self.get('followers/ids', params=params)
File "/usr/local/lib/python3.3/dist-packages/twython-3.0.0-py3.3.egg/twython/api.py", line 231, in get
return self.request(endpoint, params=params, version=version)
File "/usr/local/lib/python3.3/dist-packages/twython-3.0.0-py3.3.egg/twython/api.py", line 225, in request
content = self._request(url, method=method, params=params, api_call=url)
File "/usr/local/lib/python3.3/dist-packages/twython-3.0.0-py3.3.egg/twython/api.py", line 195, in _request
retry_after=response.headers.get('retry-after'))
twython.exceptions.TwythonAuthError: Twitter API returned a 401 (Unauthorized), An error occurred processing your request.