在 Python 中重试一个函数

我很难弄清楚如何在 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 秒,但问题是:

  1. 即使消息将被发送,它仍然会继续尝试,同时它需要中断

  2. 如果它会失败三次,它应该打印一个错误,我不知道该怎么做

我找到了这个库,但我认为它对于这样一个简单的任务来说太过分了。谁能帮我解决这个问题?


犯罪嫌疑人X
浏览 137回答 2
2回答

莫回无

我建议使用 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:        breakelse:    # raise the real error here如果函数调用成功,您的代码将break退出循环并且不会触发该else子句。else仅当循环在没有 . 的情况下完成时才会触发该子句break。

红颜莎娜

像这样发送消息后,在 try 块中使用中断 -for x in Retries:    try:        print('Hi there')        break #Add a break here    except Exception as e:        time.sleep(x)Hi there
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python