国产探花免费观看_亚洲丰满少妇自慰呻吟_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__":

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 密云县| 涟水县| 突泉县| 鄄城县| 宁化县| 太湖县| 五华县| 克什克腾旗| 华容县| 宜川县| 鱼台县| 交城县| 玛多县| 宁海县| 江永县| 南康市| 兴义市| 南和县| 乌拉特后旗| 广州市| 文成县| 边坝县| 华蓥市| 锡林浩特市| 丰都县| 凤台县| 贺兰县| 广饶县| 江津市| 兴义市| 八宿县| 镇安县| 威信县| 福泉市| 青川县| 东辽县| 柞水县| 宜兰市| 于田县| 平乡县| 长兴县|