源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

python重试装饰器示例

  • 时间:2021-02-02 17:55 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:python重试装饰器示例
利用python 写一些网络服务的时候,当网络状况不好,或者资源占用过多,任务拥塞的情况下,总会抛出一些异常,当前任务就被终止了,可以很好的利用@装饰器,写一个重试的装饰器,这样比较python! 执行结果:
[u]复制代码[/u] 代码如下:
WARNING:root:timed out, Retrying in 3 seconds... WARNING:root:timed out, Retrying in 6 seconds... WARNING:root:timed out, Retrying in 12 seconds...
[u]复制代码[/u] 代码如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- #  tanyewei@gmail.com #  2014/01/27 10:36 import time import logging import socket from functools import wraps logging.basicConfig(level=logging.DEBUG) def retry(MyException, tries=4, delay=3, backoff=2, logger=None):     def deco_retry(f):         @wraps(f)         def f_retry(*args, **kwargs):             mtries, mdelay = tries, delay             while mtries > 1:                 try:                     return f(*args, **kwargs)                 except MyException as ex:                     msg = "%s, Retrying in %d seconds..." % (str(ex), mdelay)                     if logger:                         logger.warning(msg)                     else:                         print msg                     time.sleep(mdelay)                     mtries -= 1                     mdelay *= backoff             return str(ex)         return f_retry     return deco_retry @retry(Exception, logger=logging) def check():     sk = socket.socket()     sk.settimeout(5)     sk.connect(('6.6.6.6', 80)) if __name__ == "__main__":     check()
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部