Celery Redis Beat

概述

redisbeat 是一个 Celery Beat Scheduler,不同于自带的 Scheduler,redisbeat 使用 Redis 作为存储介质,并且可以在不重新启动 celery 的前提下动态得添加/删除和修改定时任务。

特性

  1. 完美支持 celery 的定时调度
  2. 动态添加 增加/删除/修改 任务

安装方式

可以直接使用 pip 快速得安装 redisbeat

# pip install redisbeat

当然,如果你喜欢源码安装的话,也是很方便的:

# git clone https://github.com/yetship/celerybeatredis.git
# cd celerybeatredis
# python setup.py install

使用方法

当你安装好了 redisbeat 之后,那么可以跟着下面的步骤来,几步就行了,这些代码都可以在 github 的 examples 目录中找到:

  1. 启动 celery worker

    $ celery worker -A tasks -l info

  2. RedisScheduler 为 scheduler 启动 scheduler:

    $ celery beat -A tasks -S redisbeat.RedisScheduler

  3. 动态得添加一个任务 sub

    $ python add_task.py

  4. 动态得删除一个任务 sub

    $ python rm_task.py

多节点支持

当你运行多个 Redis 节点的时候, redisbeat 可以使用 redis 锁来控制同个任务的多次消费

CELERY_REDIS_MULTI_NODE_MODE = True
CELERY_REDIS_SCHEDULER_LOCK_TTL = 30