为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中重试一个函数

在 Python 中重试一个函数

犯罪嫌疑人X 2023-03-30 10:17:17
我很难弄清楚如何在 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。


查看完整回答
反对 回复 2023-03-30
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

像这样发送消息后,在 try 块中使用中断 -


for x in Retries:

    try:

        print('Hi there')

        break #Add a break here

    except Exception as e:

        time.sleep(x)

Hi there


查看完整回答
反对 回复 2023-03-30
  • 2 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信