celery三:定时任务

celery使用场景,除了上一节的异步任务,还有循环任务、定时任务。

一、添加定时任务方式一:

使用app.on_after_configure.connect装饰器,和sender.add_periodic_task方法

执行celery定时任务的模块:celery beat

创建一个保存定时任务的文件,如periodic_task.py

from __future__ import absolute_import
from __future__ import unicode_literals
from myproj.celery import app

# 定时任务装饰器:
# 作用一:当一连上redis,就启动这个函数,将任务保存到redis中
# sender参数,由装饰器提供,就像self。
@app.on_after_configure.connect
def set_periodic_tasks(sender, **kwargs):
    # 每10秒钟执行一次test任务,参数为hello
    sender.add_periodic_task(10.0, test.s('hello'), name='run every 10')


@app.task
def test(arg):
    print arg
    return arg

 

sender.add_periodic_task,由装饰器提供的方法,会添加一条定时任务

以上,是通过调用函数加定时任务,也可以像写配置文件一样,添加定时任务

定时任务的管理,由一个单独的进程来管理,当定时任务到的时侯,发送给worker。

因此,定时任务,除了要启动worker之外,还要启动任务调度器celery beat

-A的参数,同样是文件或目录

celery -A periodic_task beat

启动worker

celery -A  periodic_task worker -l info

一、添加定时任务方式二:

配置文件的方式实现,使用 crontab

 

posted on 2018-08-18 21:36  myworldworld  阅读(373)  评论(0)    收藏  举报

导航