On Wed, Jun 3, 2015 at 10:27 PM, Cecil Westerhof <ce...@decebal.nl> wrote: > def send_message(account_id, message, max_tries, terminate_program): > error_msg = 'Something went wrong with: ' + message > not_send = True > tries = 0 > while not_send: > try: > Core().update_status(account_id, message) > except libturpial.exceptions.ServiceOverCapacity: > tries += 1 > print('Tried to send it {0} times'.format(tries)) > if tries >= max_tries: > terminate_program(error_msg) > time.sleep(60) > except: > terminate_program(error_msg) > else: > not_send = False > > Is this a reasonable way to implement this, or is another way better? > Well, maybe the timeout should be a parameter also. ;-)
I'd skip the not_send flag and do the logic thusly: while True: try: update_status as above break except ServiceOverCapacity: as above And I'd also skip the bare except clause. If you get any sort of exception, whether it's a bug, a failure from libturpial, a network error, or anything else, your code will just terminate with a bland and useless message. Much better to simply let the exception bubble up. > Also the documentation of time.sleep says: > The actual suspension time may be less than that requested because > any caught signal will terminate the sleep() following execution > of that signal’s catching routine. > > My program does not much else as sending the message. So I think it is > not necessary to cover for this possibility. Are I assuming to much? I wouldn't worry too much about a signal cutting your sleep short; it doesn't look to me as if "exactly sixty seconds" is all that crucial here. If your program sleeps for 42.645 seconds and then gets woken up by a signal, and you retry a bit sooner than you otherwise would have, is it going to break anything? If not, just ignore that possibility. ChrisA -- https://mail.python.org/mailman/listinfo/python-list