eine leichte Alternative .
huey ist:
huey unterstützt:
from huey import RedisHuey , crontab
huey = RedisHuey ( 'my-app' , host = 'redis.myapp.com' )
@ huey . task ()
def add_numbers ( a , b ):
return a + b
@ huey . task ( retries = 2 , retry_delay = 60 )
def flaky_task ( url ):
# This task might fail, in which case it will be retried up to 2 times
# with a delay of 60s between retries.
return this_might_fail ( url )
@ huey . periodic_task ( crontab ( minute = '0' , hour = '3' ))
def nightly_backup ():
sync_all_data ()
Durch den Aufruf einer task
dekorierten Funktion wird der Funktionsaufruf zur Ausführung durch den Verbraucher in die Warteschlange gestellt. Es wird sofort ein spezielles Ergebnis-Handle zurückgegeben, mit dem das Ergebnis nach Abschluss der Aufgabe abgerufen werden kann:
>>> from demo import add_numbers
>>> res = add_numbers( 1 , 2 )
>>> res
>>> res()
3
Aufgaben können so geplant werden, dass sie in der Zukunft ausgeführt werden:
>>> res = add_numbers.schedule(( 2 , 3 ), delay = 10 ) # Will be run in ~10s.
>>> res( blocking = True ) # Will block until task finishes, in ~10s.
5
Weitere Informationen finden Sie in der Anleitung oder im Beispielcode.
Führen Sie den Verbraucher mit vier Arbeitsprozessen aus:
$ huey_consumer.py my_app.huey -k process -w 4
So führen Sie den Verbraucher mit einem einzelnen Arbeitsthread aus (Standard):
$ huey_consumer.py my_app.huey
Wenn Ihre Arbeitslasten hauptsächlich E/A-gebunden sind, können Sie den Verbraucher stattdessen mit Threads oder Greenlets ausführen. Da Greenlets so leicht sind, können Sie viele davon effizient betreiben:
$ huey_consumer.py my_app.huey -k greenlet -w 32
Hueys Design und Funktionsumfang wurden durch die Fähigkeiten der Redis-Datenbank beeinflusst. Redis eignet sich hervorragend für eine leichtgewichtige Aufgabenwarteschlangenbibliothek wie Huey: Es ist eigenständig, vielseitig und kann eine Mehrzwecklösung für andere Webanwendungsaufgaben wie Caching, Ereignisveröffentlichung, Analyse, Ratenbegrenzung und mehr sein.
Obwohl Huey im Hinblick auf Redis entwickelt wurde, implementiert das Speichersystem eine einfache API und viele andere Tools könnten anstelle von Redis verwendet werden, wenn Sie dies bevorzugen.
Huey bietet integrierte Unterstützung für Redis, SQLite und In-Memory-Speicher.
Siehe Huey-Dokumentation.
Siehe Quellcode und Issue-Tracker auf Github.
Huey wurde zu Ehren meiner Katze benannt: