Python 异步任务模块 Celery 快速上手 (三)

05/13/2018

定时任务

例子

这里我举一个监控网站的例子吧, 每十秒钟对我的网站进行一次想响应码输出

执行celery命令,启动你的定时任务

worker是celery执行任务的进程,beat是celery对任务进行调度的进程

任务锁

有时候任务执行的时间可能会超过10秒,10秒一到,beat直接就把任务发给worker,然后worker又开始执行下一个任务了,这样不太好,不好在如果单个任务资源消耗量大,那么就会出现阻塞,解决办法就是加上任务锁

现在我们把执行时间改成5秒一次

通过redis获取一个lk的值,定时任务内的判断语句判断lk是否为true,如果为true代表任务已经在执行了,如果没有在执行就把lk设置成有值,等任务结束或者出现异常的时候,把lk设置成空,这样当这个任务正在执行的时候,其他任务执行判断lk是否有值,如果有值就直接return不执行

基本上常用的celery操作也就这几个了