跳转到主要内容

huey,一个轻量级的任务队列

项目描述

http://media.charlesleifer.com/blog/photos/huey2-logo.png

一种轻量级替代方案.

huey是

  • 一个任务队列

  • 用Python编写的

  • 干净简单的API

  • redis、sqlite、文件系统或内存存储

  • 示例代码.

  • 阅读文档.

huey支持

  • 多进程、多线程或greenlet任务执行模型

  • 安排任务在指定时间或延迟后执行

  • 安排周期性任务,如crontab

  • 自动重试失败的任务

  • 任务优先级

  • 任务结果存储

  • 任务过期

  • 任务锁定

  • 任务管道和链

http://i.imgur.com/2EpRs.jpg

速览

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
<Result: task 6b6f36fc-da0d-4069-b46c-c0d4ccff1df6>

>>> 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

如果您的负载主要是I/O密集型,则可以使用线程或greenlets来运行消费者。由于greenlets非常轻量级,因此可以有效地运行相当多的它们

$ huey_consumer.py my_app.huey -k greenlet -w 32

存储

Huey 的设计和功能集合受到了 Redis 数据库的功能启发。对于像 Huey 这样的轻量级任务队列库,Redis 是一个完美的选择:它是一个独立的、多功能的解决方案,可以用于其他网络应用程序任务,如缓存、事件发布、分析、速率限制等。

虽然Huey的设计初衷是考虑到Redis,但存储系统实现了一个简单的API,如果需要,可以使用其他工具替代Redis。

Huey内置了对Redis、Sqlite和内存存储的支持。

文档

查看Huey文档.

项目页面

在Github上查看源代码和问题跟踪器.

Huey的名字是为了纪念我的猫

http://m.charlesleifer.com/t/800x-/blog/photos/p1473037658.76.jpg?key=mD9_qMaKBAuGPi95KzXYqg

项目详情


发布历史 发布通知 | RSS订阅

下载文件

下载适合您平台的应用程序文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

huey-2.5.2.tar.gz (889.4 kB 查看哈希值)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面