On 2019-05-23 22:55, Cecil Westerhof wrote:
Cecil Westerhof <ce...@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.
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to