git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Handling an connection error with Twython


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