huey
2.5.2
一个轻量级的替代品。
休伊是:
休伊支持:
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 ()
调用task
修饰的函数会将函数调用排入队列以供使用者执行。立即返回一个特殊的结果句柄,可用于在任务完成后获取结果:
>>> from demo import add_numbers
>>> res = add_numbers( 1 , 2 )
>>> res
>>> res()
3
任务可以安排在将来运行:
>>> res = add_numbers.schedule(( 2 , 3 ), delay = 10 ) # Will be run in ~10s.
>>> res( blocking = True ) # Will block until task finishes, in ~10s.
5
有关更多信息,请查看指南或查看示例代码。
使用四个工作进程运行消费者:
$ huey_consumer.py my_app.huey -k process -w 4
要使用单个工作线程运行使用者(默认):
$ huey_consumer.py my_app.huey
如果您的工作负载主要是 IO 密集型,您可以使用线程或 greenlet 来运行使用者。因为 greenlet 非常轻量,所以您可以高效地运行其中的一些:
$ huey_consumer.py my_app.huey -k greenlet -w 32
Huey 的设计和功能集是基于 Redis 数据库的功能。 Redis 非常适合像 Huey 这样的轻量级任务队列库:它是独立的、多功能的,并且可以成为其他 Web 应用程序任务(如缓存、事件发布、分析、速率限制等)的多用途解决方案。
尽管 Huey 的设计考虑了 Redis,但存储系统实现了一个简单的 API,并且如果您愿意的话,可以使用许多其他工具来代替 Redis。
Huey 内置了对 Redis、Sqlite 和内存存储的支持。
请参阅休伊文档。
请参阅 Github 上的源代码和问题跟踪器。
休伊的名字是为了纪念我的猫: