我很難弄清楚如何在 Python 中實現一個簡單的重試函數,我的代碼應該在固定的時間內嘗試將消息發(fā)送到電報,如果在總次數之后它仍然會失敗,請打印一個錯誤。相反,如果成功,則中斷并繼續(xù)。所以我有以下數組:Retries = [1, 2, 3]這意味著,如果失敗,請等待 1 秒,如果再次失敗,請等待 2 秒,然后再等待 3 秒。然后我有以下代碼:for x in Retries: try: updater.bot.send_message(chat_id='myid', text='TEST') except Exception as e: time.sleep(x)此代碼將嘗試三次并在每次嘗試之間等待 1、2、3 秒,但問題是:即使消息將被發(fā)送,它仍然會繼續(xù)嘗試,同時它需要中斷如果它會失敗三次,它應該打印一個錯誤,我不知道該怎么做我找到了這個庫,但我認為它對于這樣一個簡單的任務來說太過分了。誰能幫我解決這個問題?
2 回答

莫回無
TA貢獻1865條經驗 獲得超7個贊
我建議使用 pythons 神秘但有用的循環(huán)else子句for:
for x in Retries:
try:
updater.bot.send_message(chat_id='myid', text='TEST')
except Exception as e:
time.sleep(x)
else:
break
else:
# raise the real error here
如果函數調用成功,您的代碼將break退出循環(huán)并且不會觸發(fā)該else子句。else僅當循環(huán)在沒有 . 的情況下完成時才會觸發(fā)該子句break。

紅顏莎娜
TA貢獻1842條經驗 獲得超13個贊
像這樣發(fā)送消息后,在 try 塊中使用中斷 -
for x in Retries:
try:
print('Hi there')
break #Add a break here
except Exception as e:
time.sleep(x)
Hi there
添加回答
舉報
0/150
提交
取消