芹菜异步任务和调度任务,celery,定时,写,的,很,乱,只,给,自己,用


django 启动celery

python manage.py celery worker --settings = settings

运行上面的命令,就相当于加载了你task文件里面的内容,你就可以调用了

加入task里面有一个cal(x,y)函数

那么使用cal.delay(2,3) 就可以异步执行

获取执行结果:

https://www.cnblogs.com/piperck/p/5391128.html

启动定时任务命令如下:

python manage.py celery beat --loglevel=info

关于定时任务, 写法如下:

从celery导入periodic_task这样一个注解,然后加在函数上面,里面一定要设置run_every属性,下面的是每5秒设置一次

但是这个注解已经是deprecated了,所以还是不用的好

# coding: utf-8
from celery import task
from celery.task import periodic_task
from blueapps.utils.logger import logger # 这个东西可以不用,就是一个打印的功能
import datetime
import time
@task
def cal_sum(x,y):
    time.sleep(3)
    logger.error('执行了简单的加法')
    return x+y


@periodic_task(run_every = 5)
def get_time():
    x = datetime.datetime.now()
    logger.error(f'time: {str(x)}' )

然后,还有一个基于数据库的方法

https://blog.csdn.net/sicofield/article/details/50937338

这个方法也是推荐的 方法,任务的周期, 执行什么任务,都存在数据库里,方便修改,