Handling an connection error with Twython

Cecil Westerhof Cecil at decebal.nl
Fri May 24 01:49:23 EDT 2019

MRAB <python at mrabarnett.plus.com> writes:

> On 2019-05-23 22:55, Cecil Westerhof wrote:
>> Cecil Westerhof <Cecil at decebal.nl> writes:
>>> I am using Twython to post updates on Twitter. Lately there is now and
>>> then a problem with my internet connection. I am using:
>>>     posted = twitter.update_status(status = message,
>>>                                    in_reply_to_status_id = message_id,
>>>                                    trim_user = True)
>>> What would be the best way to catch a connection error and try it (for
>>> example) again maximum three times with a delay of one minute?
>> At the moment I solved it with the following:
>>      max_tries   = 3
>>      current_try = 1
>>      while True:
>>          try:
>>              posted = twitter.update_status(status = message,
>>                                             in_reply_to_status_id = message_id,
>>                                             trim_user = True)
>>              return posted['id']
>>          except TwythonError as e:
>>              print('Failed on try: {0}'.format(current_try))
>>              if not 'Temporary failure in name resolution' in e.msg:
>>                  raise
>>              if current_try == max_tries:
>>                  raise
>>              current_try += 1
>>              time.sleep(60)
>> Is this a good way to do it, or can it be improved on?
>> When it goes OK I just return from the function.
>> If it goes wrong for something else as failure in the name resolution
>> I re-raise the exception.
>> When the maximum tries are done I re-raise the exception.
>> Otherwise I wait a minute to try it again.
> You have a 'while' loop with a counter; you can replace that with a
> 'for' loop.

I did not do that consciously, because I have to try until it is
successful an I return, or I reached the max tries and re-raise the
exception. With a for loop I could exit the loop and cannot re-raise
the exception.

Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof

More information about the Python-list mailing list