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
<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
如果您的工作負載主要是 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 上的原始碼和問題追蹤器。
休伊的名字是為了紀念我的貓: