python 使用celery实现定时任务
python使用celery实现定时任务
celery是python的第三方包,在django中也可以使用,只不过需要手动进行配置相关配置信息。
很多情况下需要定时的执行某些任务,例如我的博客中,需要每天凌晨5点更新当天的笔记记录情况,主要用于热点图的可视化工作。选定某一个时间更新,加上增加缓存就可以有效的降低服务器的压力。
或者在其他业务中也经常用到定时任务进行数据库的维护或者定时爬虫,生日定时消息推送等等。接下来就一起学习一下celery的定时任务的实现。
假设你已经写好了celery任务函数。
对定时任务代码简单实现
代码:
1 |
|
说明:为了让任务能够一直被监听到,我们需要一直与celery保持连接,所以我们需要启动一个心跳包(beat)。
启动指令:celery beat -A project -l info
启动成功,会显示如下信息:
1 |
|
beat心跳包的原理是每隔一段时间告诉服务器,我还活着,不要断开我哦。
因为服务器一般会在一个Timer事件中,向客户端发送一个很小的数据包,然后启动一个低级别的线程,这个线程的作用是不断监听这个客户端是否还在连接中,客户端需要告知这个线程我还活着,这样就可以一直保持着连接。
注:启动成功后,一旦定时任务触发,如果有输出结果的话,会在celery的日志中出现。
Crontab schedules的各种形式
from celery.schedules import crontab
通过crontab设定不同时间的定时任务
下面是取自官方的example
1 |
|
还有些其他的要点,可以参考官方文档:
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!