une alternative légère .
Huey est :
huey prend en charge :
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 ()
L’appel d’une fonction décorée par task
mettra en file d’attente l’appel de fonction pour exécution par le consommateur. Un handle de résultat spécial est renvoyé immédiatement, qui peut être utilisé pour récupérer le résultat une fois la tâche terminée :
>>> from demo import add_numbers
>>> res = add_numbers( 1 , 2 )
>>> res
>>> res()
3
Les tâches peuvent être planifiées pour s'exécuter dans le futur :
>>> res = add_numbers.schedule(( 2 , 3 ), delay = 10 ) # Will be run in ~10s.
>>> res( blocking = True ) # Will block until task finishes, in ~10s.
5
Pour bien plus, consultez le guide ou jetez un œil à l’exemple de code.
Exécutez le consommateur avec quatre processus de travail :
$ huey_consumer.py my_app.huey -k process -w 4
Pour exécuter le consommateur avec un seul thread de travail (par défaut) :
$ huey_consumer.py my_app.huey
Si vos charges de travail sont principalement liées aux E/S, vous pouvez plutôt exécuter le consommateur avec des threads ou des greenlets. Étant donné que les greenlets sont si légers, vous pouvez en exécuter plusieurs efficacement :
$ huey_consumer.py my_app.huey -k greenlet -w 32
La conception et l'ensemble des fonctionnalités de Huey ont été informés par les capacités de la base de données Redis. Redis convient parfaitement à une bibliothèque de file d'attente de tâches légère comme Huey : elle est autonome, polyvalente et peut constituer une solution polyvalente pour d'autres tâches d'application Web telles que la mise en cache, la publication d'événements, l'analyse, la limitation de débit, etc.
Bien que Huey ait été conçu en pensant à Redis, le système de stockage implémente une API simple et de nombreux autres outils peuvent être utilisés à la place de Redis si telle est votre préférence.
Huey est livré avec une prise en charge intégrée de Redis, SQLite et du stockage en mémoire.
Voir la documentation Huey.
Voir le code source et le suivi des problèmes sur Github.
Huey porte le nom de mon chat :