облегченная альтернатива .
Хьюи это:
Хьюи поддерживает:
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
Если ваши рабочие нагрузки в основном связаны с вводом-выводом, вместо этого вы можете запускать потребителя с помощью потоков или гринлетов. Поскольку гринлеты очень легкие, вы можете эффективно запускать немало из них:
$ huey_consumer.py my_app.huey -k greenlet -w 32
Дизайн и набор функций Хьюи были основаны на возможностях базы данных Redis. Redis прекрасно подходит для легкой библиотеки очередей задач, такой как Huey: она автономна, универсальна и может быть многоцелевым решением для других задач веб-приложений, таких как кэширование, публикация событий, аналитика, ограничение скорости и многое другое.
Хотя Huey был разработан с учетом Redis, система хранения реализует простой API, и вместо Redis можно использовать множество других инструментов, если вы этого предпочитаете.
Huey имеет встроенную поддержку Redis, Sqlite и хранилища в памяти.
См. документацию Хьюи.
См. исходный код и систему отслеживания проблем на Github.
Хьюи назван в честь моего кота: