ทางเลือกที่มีน้ำหนักเบา
ฮิวอี้คือ:
ฮิวอี้รองรับ:
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 คุณสามารถรันคอนซูเมอร์ด้วยเธรดหรือกรีนเล็ตแทนได้ เนื่องจาก Greenlets มีน้ำหนักเบามาก คุณจึงสามารถรันบางส่วนได้อย่างมีประสิทธิภาพ:
$ huey_consumer.py my_app.huey -k greenlet -w 32
การออกแบบและชุดคุณลักษณะของ Huey ได้รับแจ้งจากความสามารถของฐานข้อมูล Redis Redis เหมาะอย่างยิ่งสำหรับไลบรารีการจัดคิวงานที่มีน้ำหนักเบาอย่าง Huey: เป็นแบบครบวงจร ใช้งานได้หลากหลาย และสามารถเป็นโซลูชันอเนกประสงค์สำหรับงานแอปพลิเคชันเว็บอื่นๆ เช่น การแคช การเผยแพร่เหตุการณ์ การวิเคราะห์ การจำกัดอัตรา และอื่นๆ
แม้ว่า Huey จะได้รับการออกแบบโดยคำนึงถึง Redis แต่ระบบจัดเก็บข้อมูลก็ใช้ API แบบธรรมดาและเครื่องมืออื่นๆ อีกมากมายที่สามารถนำมาใช้แทน Redis ได้ หากคุณต้องการ
Huey มาพร้อมกับการรองรับ Redis, Sqlite และที่เก็บข้อมูลในหน่วยความจำในตัว
ดูเอกสารประกอบของ Huey
ดูซอร์สโค้ดและตัวติดตามปัญหาบน Github
ฮิวอี้ตั้งชื่อเพื่อเป็นเกียรติแก่แมวของฉัน: