una alternativa ligera .
huey es:
huey apoya:
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 ()
Llamar a una función decorada con task
pondrá en cola la llamada a la función para que la ejecute el consumidor. Se devuelve inmediatamente un identificador de resultado especial, que se puede utilizar para recuperar el resultado una vez finalizada la tarea:
>>> from demo import add_numbers
>>> res = add_numbers( 1 , 2 )
>>> res
<Result: task 6b6f36fc-da0d-4069-b46c-c0d4ccff1df6>
>>> res()
3
Las tareas se pueden programar para ejecutarse en el futuro:
>>> res = add_numbers.schedule(( 2 , 3 ), delay = 10 ) # Will be run in ~10s.
>>> res( blocking = True ) # Will block until task finishes, in ~10s.
5
Para obtener mucho más, consulta la guía o echa un vistazo al código de ejemplo.
Ejecute el consumidor con cuatro procesos de trabajo:
$ huey_consumer.py my_app.huey -k process -w 4
Para ejecutar el consumidor con un único subproceso de trabajo (predeterminado):
$ huey_consumer.py my_app.huey
Si sus cargas de trabajo están principalmente vinculadas a IO, puede ejecutar el consumidor con subprocesos o greenlets. Debido a que los greenlets son tan livianos, puedes ejecutar bastantes de ellos de manera eficiente:
$ huey_consumer.py my_app.huey -k greenlet -w 32
El diseño y el conjunto de funciones de Huey se basaron en las capacidades de la base de datos de Redis. Redis es una opción fantástica para una biblioteca de colas de tareas liviana como Huey: es autónoma, versátil y puede ser una solución multipropósito para otras tareas de aplicaciones web como almacenamiento en caché, publicación de eventos, análisis, limitación de velocidad y más.
Aunque Huey se diseñó teniendo en cuenta a Redis, el sistema de almacenamiento implementa una API simple y se podrían usar muchas otras herramientas en lugar de Redis si así lo prefiere.
Huey viene con soporte integrado para Redis, Sqlite y almacenamiento en memoria.
Consulte la documentación de Huey.
Vea el código fuente y el rastreador de problemas en Github.
Huey lleva el nombre en honor a mi gato: