Ich fand this Rate-limitierende Python Dekorator basierend auf redis Klassen. Wie kann ich einen ähnlichen Decorator schreiben, der nur das verwendet, was in der Standardbibliothek verfügbar ist, die wie folgt verwendet werden kann?Rate-limitierende Python Decorator
def ratelimit(limit, every):
# python magic
@ratelimit(limit=1, every=2)
def printlimited(x):
print x
# print one number every two seconds
for x in range(10):
printlimited(x)
Es gibt andere answers auf Stackoverflow, aber sie erlauben nicht den Nenner zu spezifizieren.
Das Semaphor wird nicht freigegeben, wenn die umbrochene Funktion eine Ausnahme auslöst. Sie können eine 'try..finally'-Klausel verwenden, um sicherzustellen, dass dies geschieht. –
@PaulMFurley schöner Fang! Ich habe den Code bearbeitet. Würden Sie das überprüfen? –