-
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