• Mémo Décorateur Python - Différer le temps d'exécution d'une fonction

  • Time delay decorator

Voici un petit décorateur simple permettant de générer aléatoirement un temps d'attente pour exécuter une fonction donnée. C'est notamment utile en webscraping pour ne pas bombarder un serveur de requêtes et se faire bannir comme le dernier des parias. ;)

On utilisera ce décorateur ayant fait l'objet d'un précédent post pour contrôler le temps d'exécution.

Ici avec un "time delay" réglé entre 2 et 6 secondes.

from random import uniform


def timer(x, y):
    """Set random time delay before executing a function"""
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            time.sleep(uniform(x, y))
            func(*args, **kwargs)
            return func
        return wrapper
    return decorator


@time_it
@timer(2, 6)
def test():
    print("Coucou, ceci est la fonction décorée !")


test()

En sortie :

Coucou, ceci est la fonction décorée !
Function "test": 00:00:03.321 sec


24 mai 2019 02:02