python重试装饰器示例
利用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()

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

裝飾器是 python 上下文管理器的特定實作。本片文章將透過一個pytorch GPU 偵錯的範例來說明如何使用它們。雖然它可能不適用於所有情況,但我它們卻非常有用。調試記憶體洩漏問題有很多方法可以調試記憶體洩漏。本文將展示一種識別程式碼中有問題的行的有用方法。此方法可以有助於以簡潔的方式找到具體的位置。逐行手動調試如果遇到問題,一種經典的且常用的方法是使用調試器逐行檢查,例如下面的例子:在搜尋引擎中查找有關如何計算pytorch 中所有張量總數的程式碼片段,例如:tensor -counter-s

Python中的裝飾器和上下文管理器是如何運作的?在Python中,裝飾器和上下文管理器是兩個非常有用的概念和功能。它們都是為了簡化程式碼、增加程式碼可讀性以及方便程式碼的重複使用。一、裝飾器裝飾器是Python中一種用來修改函數的行為的特殊函數。它允許我們在不修改原始函數的情況下進行包裝或拓展。裝飾器在許多Python的框架和庫中被廣泛使用,例如Flask、Dj

這是我們手把手教你實現 Python 定時器的第三篇文章。前兩篇:分別是手把手教你實作一個 Python 計時器,和用上下文管理器擴展 Python 計時器,使得我們的 Timer 類別方便用、美觀實用。但我們並不滿足於此,仍然有一個用例可以進一步簡化它。假設我們需要追蹤程式碼庫中一個給定函數所花費的時間。使用上下文管理器,基本上有兩種不同的選擇:1. 每次呼叫函數時使用 Timer:with Timer("some_name"): do_something() 當我們在一

裝飾器(Decorators)是Python中非常有用的工具。裝飾器是以另一個函數為參數並擴展其功能而不明確修改它的函數。它允許我們修改函數或類別的行為而不涉及其原始程式碼。換句話說,裝飾器包裝一個函數是為了擴展它的行為,而不是永久修改它。從這篇開始,就來研究下裝飾器是啥以及是如何在Python中運作的。 1.1關於函數為了理解裝飾器是如何運作的,我們需要重新回顧Python中關於函數的一些重要概念。時時刻刻意識到,在Python中,函數(function)的地位是一等公民,所以下面幾個觀念要牢記:ü函

範例Python中的裝飾器既可以是函數也可以是類別。在前幾節中,我們使用的是函數裝飾器。現在,我們將學習如何定義類別裝飾器。我們將定義充當裝飾器的自訂類別。當用類別裝飾/修飾函數時,函數就成為該類別的實例。讓我們來一探究竟:如上所示,我們創建了一個簡單的類別裝飾器。任何類別要成為裝飾器,都需要實作__call__()方法。 __call__()方法的功能與函數裝飾器中的包裝器函數相同。現在讓我們用這個類別來裝飾一個函數:運行程式輸出結果如下:帶有*args和**kwargs參數的類別裝飾器為了讓類別裝飾器使用參數用

Python 是一種對新手很友善的語言。但是,它也有很多較難掌握的高級功能,例如裝飾器(decorator)。許多初學者一直不理解裝飾器及其工作原理,在這篇文章中,我們將介紹裝飾器的來龍去脈。在 Python 中,函數是一種非常靈活的結構,我們可以把它賦值給變數、當作參數傳遞給另一個函數,或是當成某個函數的輸出。裝飾器本質上也是一種函數,它可以讓它函數在不經過修改的情況下增加一些功能。這也就是「裝飾」的意義,這種「裝飾」本身代表著一種功能,如果用它來修飾不同的函數,那就是為這些函數增加這種功

Python中裝飾器的常見問題及解決方案什麼是裝飾器?裝飾器是Python中一種非常強大的功能,可以用來修改已有函數或類別的行為,而無需修改其原始碼。裝飾器實際上是個函數或類,它接受一個函數或類別作為參數,然後傳回一個新的函數或類別。如何寫一個簡單的裝飾器?下面是一個簡單的裝飾器範例:defdecorator(func):definner_func

裝飾器(decorator)是一種高級Python語法。可以對一個函數、方法或類別進行加工。在Python中,我們有多種方法對函數和類別進行加工,相對於其它方式,裝飾器語法簡單,程式碼可讀性高。因此,裝飾器在Python專案中有廣泛的應用。修飾器常被用於有切面需求的場景,較為經典的有插入日誌、效能測試、事務處理,Web權限校驗,Cache等。裝飾器的優點是能夠抽離出大量函數中與函數功能本身無關的雷同程式碼並繼續重複使用。即,可以將函數「修飾」為完全不同的行為,可以有效的將業務邏輯正交分解。概括的講,裝飾
