python重试装饰器示例

Jun 06, 2016 am 11:29 AM
デコレータ

利用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()

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

デコレータを使用して Python タイマーを拡張する方法を段階的に説明します。 デコレータを使用して Python タイマーを拡張する方法を段階的に説明します。 Apr 13, 2023 pm 08:46 PM

これは、Python タイマーを実装する方法を段階的に説明する 3 番目の記事です。最初の 2 つの記事: Python タイマーを実装する方法と、コンテキスト マネージャーを使用して Python タイマーを拡張し、Timer クラスを使いやすく、美しく実用的なものにする方法を段階的に説明します。しかし、これに満足しているわけではありません。さらに簡素化できるユースケースがまだあります。コードベース内の特定の関数に費やされた時間を追跡する必要があるとします。コンテキスト マネージャーを使用すると、基本的に 2 つの異なるオプションがあります: 1. 関数を呼び出すたびに Timer を使用します: with Timer("some_name"): do_something()

デコレータとコンテキスト マネージャは Python でどのように機能しますか? デコレータとコンテキスト マネージャは Python でどのように機能しますか? Oct 20, 2023 pm 07:04 PM

デコレータとコンテキスト マネージャは Python でどのように機能しますか? Python では、デコレータとコンテキスト マネージャは 2 つの非常に便利な概念および機能です。これらはすべて、コードを簡素化し、コードの可読性を高め、コードの再利用を容易にするように設計されています。 1. デコレータ デコレータは、関数の動作を変更するために使用される Python の特別な関数です。これにより、元の関数を変更せずにラップまたは拡張できます。デコレータは、Flask、Dj などの多くの Python フレームワークやライブラリで広く使用されています。

コンテキスト デコレータを使用した Pytorch のメモリ リーク問題のデバッグ コンテキスト デコレータを使用した Pytorch のメモリ リーク問題のデバッグ Apr 10, 2023 am 11:31 AM

デコレーターは、Python コンテキスト マネージャーの特定の実装です。この記事では、pytorch GPU デバッグの例を通じてそれらの使用方法を説明します。すべての状況で機能するとは限りませんが、非常に便利であることがわかりました。メモリ リークの問題のデバッグ メモリ リークをデバッグするには、さまざまな方法があります。この記事では、コード内で問題のある行を特定するための便利な方法を紹介します。この方法は、特定の場所を簡潔な方法で見つけるのに役立ちます。行ごとの手動デバッグ 問題が発生した場合、古典的で一般的に使用される方法は、次の例のように、デバッガーを使用して行ごとにチェックすることです。検索エンジン (例: tensor -counter-s)

Python デコレータを 1 つの記事で理解する Python デコレータを 1 つの記事で理解する Apr 12, 2023 pm 09:40 PM

Python は初心者に優しい言語です。ただし、デコレータなど、使いこなすのが難しい高度な機能も数多くあります。多くの初心者は、デコレータとその仕組みを理解したことがありません。この記事では、デコレータの詳細を紹介します。 Python では、関数は非常に柔軟な構造であり、変数に割り当てたり、パラメーターとして別の関数に渡したり、関数の出力として使用したりできます。デコレーターは本質的に、他の関数が変更せずに機能を追加できるようにする関数です。これが「装飾」の意味です。この「装飾」自体が機能を表しており、別の機能を変更するために使用すると、その機能にその機能が追加されます。

Python プログラミング: デコレーター関数の再理解 Python プログラミング: デコレーター関数の再理解 May 27, 2023 pm 03:57 PM

デコレータは Python の非常に便利なツールです。デコレータは、別の関数をパラメータとして受け取り、明示的に変更せずにその機能を拡張する関数です。これにより、ソース コードに触れることなく、関数またはクラスの動作を変更できます。言い換えれば、デコレーターは関数を永続的に変更するのではなく、その動作を拡張するために関数をラップします。この記事から始めて、デコレータとは何か、そしてデコレータが Python でどのように機能するかを学びましょう。 1.1 関数について デコレータがどのように機能するかを理解するには、Python の関数に関するいくつかの重要な概念を確認する必要があります。 Python では関数 (関数) が第一級市民であるため、次の概念に留意する必要があることに常に注意してください。 ü 関数

Python のデコレータに関する一般的な問題と解決策 Python のデコレータに関する一般的な問題と解決策 Oct 10, 2023 am 11:58 AM

Python のデコレータに関するよくある質問と解決策 デコレータとは何ですか? デコレータは Python の非常に強力な機能で、ソース コードを変更せずに既存の関数やクラスの動作を変更するために使用できます。デコレータは実際には、関数またはクラスをパラメータとして受け取り、新しい関数またはクラスを返す関数またはクラスです。単純なデコレータを作成するにはどうすればよいですか? 単純なデコレータの例を次に示します: defdecorator(func):definner_func

Python プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイント Python プログラミング: クラス デコレータとアプリケーションを実装するには?把握すべき重要なポイント Apr 12, 2023 pm 05:25 PM

Python のデコレータの例は、関数またはクラスのいずれかです。前のセクションでは、関数デコレーターを使用しました。次に、クラス デコレータを定義する方法を学びます。デコレータとして機能するカスタム クラスを定義します。関数がクラスで修飾/変更されると、関数はそのクラスのインスタンスになります。調べてみましょう: 上に示したように、単純なクラス デコレータを作成しました。デコレータになるクラスには、 __call__() メソッドを実装する必要があります。 __call__() メソッドは、関数デコレーターのラッパー関数と同じように機能します。次に、このクラスを使用して関数を装飾しましょう: プログラムの実行の出力は次のとおりです: *args および **kwargs パラメーターを備えたクラス デコレーター。クラス デコレーターにパラメーターを使用させるには、次を使用します。

Python デコレータの理解と適用 Python デコレータの理解と適用 May 08, 2023 am 08:10 AM

デコレータは高度な Python 構文です。関数、メソッド、またはクラスを処理できます。 Python では関数やクラスを処理するメソッドが複数ありますが、デコレータは他のメソッドに比べて構文が単純でコードの可読性が高いです。したがって、デコレータは Python プロジェクトで広く使用されています。デコレータは、横断的な要件を持つシナリオでよく使用されます。典型的な例には、挿入ログ、パフォーマンス テスト、トランザクション処理、Web 権限の検証、キャッシュなどが含まれます。デコレータの利点は、関数自体とは関係のない多数の関数で同じコードを抽出し、それを再利用し続けることができることです。つまり、関数をまったく異なる動作に「変更」することができ、ビジネス ロジックを効果的に直交的に分解することができます。一般的に装飾というと、

See all articles