我很難弄清楚如何在 Python 中實現一個簡單的重試函數,我的代碼應該在固定的時間內嘗試將消息發送到電報,如果在總次數之后它仍然會失敗,請打印一個錯誤。相反,如果成功,則中斷并繼續。所以我有以下數組: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 秒,但問題是:即使消息將被發送,它仍然會繼續嘗試,同時它需要中斷如果它會失敗三次,它應該打印一個錯誤,我不知道該怎么做我找到了這個庫,但我認為它對于這樣一個簡單的任務來說太過分了。誰能幫我解決這個問題?
2 回答

莫回無
TA貢獻1865條經驗 獲得超7個贊
我建議使用 pythons 神秘但有用的循環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退出循環并且不會觸發該else子句。else僅當循環在沒有 . 的情況下完成時才會觸發該子句break。

紅顏莎娜
TA貢獻1842條經驗 獲得超13個贊
像這樣發送消息后,在 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
提交
取消