众所周知,Celery是Python中非常著名的任务队列框架,其中还包含了一个“定时调度任务”的大杀器,其机制大致就是通过Celery内置的celerybeat来开启一个进程,然后把对应worker中的任务定时丢给rabbitmq或者redis来去跑。其实简单的来说,就是当你开启celery的时候,你希望被调度的任务已经开始跑了。
celery-task-tigger是用来干嘛的?
如果有一天我们希望自己来去控制何时开始跑定时任务并且何时去停止,那么这个问题就稍微有点复杂......所以在这里celery-task-tigger这个小插件或许能助你一臂之力。
用起来非常简单,你只需要引入一行代码就能搞定,举个例子:[code]from celery_tasktigger.decorator import tigger_task
@app.task(bind=True)
@tigger_task(max_times='forever') # 就是这个小魔法
def add(self, x, y):
return x + y[/code]装饰器@tigger_task 提供了2个参数:max_times和countdown
1. max_times
输入类型为Int, 表示最多可执行几次,其中有一个特殊参数‘forever’表示无限执行
2. countdown
输入类型Int,表示每次执行结束的几秒后进行再次执行,默认为1秒
然后你就可以随心所欲的来控制你自己的task,并且100%兼容celery
Further......
那么在未来的版本中,我会根据大家的反馈增加更多的定制功能,比如增加对原生periodic task的控制,加大更多的时间处理,比如crontab等。
软件详情:https://github.com/boylegu/celery-task-tigger
来自:开源中国社区

