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

首頁 > 編程 > Python > 正文

python重試裝飾器示例

2019-11-25 18:31:42
字體:
來源:轉載
供稿:網友

利用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__":
    check()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苍梧县| 册亨县| 鹤峰县| 广平县| 蓝田县| 万盛区| 同德县| 金塔县| 静乐县| 伊宁市| 亳州市| 右玉县| 嘉义县| 昆山市| 安化县| 从化市| 潞西市| 长垣县| 天水市| 社旗县| 建湖县| 乐至县| 辰溪县| 清河县| 洛浦县| 湟源县| 黄梅县| 新民市| 隆尧县| 门源| 德安县| 普洱| 西平县| 普宁市| 同仁县| 红安县| 体育| 正阳县| 昭觉县| 门头沟区| 宁陕县|