国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python重試裝飾器示例

2020-02-23 05:09:04
字體:
來源:轉載
供稿:網友

利用python 寫一些網絡服務的時候,當網絡狀況不好,或者資源占用過多,任務擁塞的情況下,總會拋出一些異常,當前任務就被終止了,可以很好的利用@裝飾器,寫一個重試的裝飾器,這樣比較python!
執行結果:
代碼如下:
WARNING:root:timed out, Retrying in 3 seconds...
WARNING:root:timed out, Retrying in 6 seconds...
WARNING:root:timed out, Retrying in 12 seconds...

代碼如下:
#!/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__":

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梁平县| 十堰市| 郁南县| 隆昌县| 高邮市| 三门县| 驻马店市| 浦北县| 阿合奇县| 来宾市| 怀仁县| 行唐县| 商南县| 麻城市| 甘孜县| 保亭| 永德县| 林甸县| 临安市| 大城县| 沧州市| 吴川市| 乡宁县| 胶州市| 武胜县| 上蔡县| 长子县| 白山市| 什邡市| 论坛| 屏东县| 漳平市| 徐州市| 武平县| 永清县| 林州市| 民勤县| 土默特左旗| 临沭县| 汕尾市| 宜兰市|