uma alternativa leve .
Huey é:
Huey suporta:
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 ()
Chamar uma função decorada com task
colocará a chamada de função na fila para execução pelo consumidor. Um identificador de resultado especial é retornado imediatamente, que pode ser usado para buscar o resultado assim que a tarefa for concluída:
>>> from demo import add_numbers
>>> res = add_numbers( 1 , 2 )
>>> res
>>> res()
3
As tarefas podem ser agendadas para execução no 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 muito mais, confira o guia ou dê uma olhada no código de exemplo.
Execute o consumidor com quatro processos de trabalho:
$ huey_consumer.py my_app.huey -k process -w 4
Para executar o consumidor com um único thread de trabalho (padrão):
$ huey_consumer.py my_app.huey
Se suas cargas de trabalho estiverem principalmente vinculadas a IO, você poderá executar o consumidor com threads ou greenlets. Como os greenlets são muito leves, você pode executar alguns deles com eficiência:
$ huey_consumer.py my_app.huey -k greenlet -w 32
O design e o conjunto de recursos de Huey foram informados pelos recursos do banco de dados Redis. O Redis é uma opção fantástica para uma biblioteca leve de enfileiramento de tarefas como o Huey: é independente, versátil e pode ser uma solução multifuncional para outras tarefas de aplicativos da Web, como armazenamento em cache, publicação de eventos, análises, limitação de taxa e muito mais.
Embora o Huey tenha sido projetado com o Redis em mente, o sistema de armazenamento implementa uma API simples e muitas outras ferramentas podem ser usadas em vez do Redis, se essa for sua preferência.
Huey vem com suporte integrado para Redis, Sqlite e armazenamento na memória.
Consulte a documentação do Huey.
Veja o código-fonte e o rastreador de problemas no Github.
Huey recebeu o nome em homenagem ao meu gato: