适用场景几点几分执行特定的任务

定时任务

配置这个无需多说了和上篇文章一样

任务函数

硬菜来了 添加任务时候的写法

第一种:

from celery_task.order_task import order_add
from celery_task.user_task import user_add from datetime import datetime # 拼接得到执行任务的时间,得到的就是一个时间对象
v1 = datetime(2019, 7, 21, 16, 53, 00)
print('执行任务时间:', v1)
# 转化成utc时间
v2 = datetime.utcfromtimestamp(v1.timestamp())
print('执行任务的utc时间:', v2)
# 执行定时任务,调用apply_async,args是要传入的参数,eta是执行的时间
result = user_add.apply_async(args=[1, 3], eta=v2)
print(result.id)

这里面需要把时间转化成utc时区的时间,不然间隔十小时,自己推算即可

唯一变的就是传递参数的调用变成了apply_async(args=[参数,参数],eta=执行任务的时间)

worker日志

接收到任务到时间 16:52:17

任务执行完成的时间 16:53:02

任务耗时2秒

第二种

# 获取当前时间
ctime = datetime.now()
# 默认用utc时间,把当前时间转utc时间
utc_ctime = datetime.utcfromtimestamp(ctime.timestamp())
from datetime import timedelta # 这段意思是取十秒之后的时间对象,因为时间对象只能和时间对象相加
time_delay = timedelta(seconds=10)
# 最终的时间对象为当前时间后十秒
task_time = utc_ctime + time_delay
print('最终时间', task_time) # 使用apply_async并设定时间
result = user_add.apply_async(args=[4, 3], eta=task_time)
print(result.id)

打印信息

worker日志信息

执行计划任务

from datetime import timedelta
from celery.schedules import crontab APP.conf.beat_schedule = {
# 名字随意命名
'add-every-10-seconds': {
# 执行tasks1下的test_celery函数
'task': 'celery_task.tasks1.test_celery',
# 每隔2秒执行一次
# 'schedule': 1.0,
# 'schedule': crontab(minute="*/1"),
'schedule': timedelta(seconds=2),
# 传递参数
'args': ('参数', '参数')
},
'add-every-12-seconds': {
'task': 'celery_task.tasks1.test_celery',
# 每年4月11号,8点42分执行
'schedule': crontab(minute=42, hour=8, day_of_month=11, month_of_year=4),
'schedule': crontab(minute=42, hour=8, day_of_month=11, month_of_year=4),
'args': (16, 16)
},
}

启动一个beat自定提交任务:celery beat -A celery_tasks.tasks -l info

Celery定时任务|计划任务的更多相关文章

  1. celery 分布式异步任务框架(celery简单使用、celery多任务结构、celery定时任务、celery计划任务、celery在Django项目中使用Python脚本调用Django环境)

    一.celery简介: Celery 是一个强大的 分布式任务队列 的 异步处理框架,它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行.我们通常使用它来实现异步任务(async tas ...

  2. celery 定时任务时间篇

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...

  3. celery 定时任务

    用celery定时任务,定时删除文件夹 tasks.py from celery import Celery import os import shutil app = Celery('demo') ...

  4. Linux定时任务计划

    Linux定时任务计划 在使用Linux系统时,我们有时会需要让系统在某个时间去执行特定的任务,这时就需要去了解Linux提供的定时任务功能 种类 Linux的定时任务分为两种:单一型和循环型 单一型 ...

  5. 将celery定时任务设置为根据本地时区触发

    默认celery的时区为UTC,如果要在django项目中将celery定时任务配置为根据本地时区触发,则需要修改 在setttings.py 添加以下任意一行: # celery 相关配置 CELE ...

  6. Django Celery定时任务和时间设置

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: #coding:utf- from celery.task.schedules ...

  7. Bamboo Django Celery定时任务和时间设置

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...

  8. celery 定时任务,使用crontab表达式不执行(版本4.3.x)

    celery 定时任务,使用crontab表达式不执行(版本4.3.x) 在使用celery 执行定时任务时,发现任务不会执行,schedule设置如下: 经测试,如果去掉hour,则任务每分钟都会执 ...

  9. Celery定时任务细讲

    Celery定时任务细讲 一.目录结构 任务所在目录 ├── celery_task # celery包 如果celery_task只是建了普通文件夹__init__可以没有,如果是包一定要有 │ ├ ...

随机推荐

  1. window-tree命令

    tree 以图形方式显示在驱动器中的目录结构或磁盘的路径. 有时候需要整理文档目录时,而文件太多,一个个去写相应的文件目录结构也不现实,就用到了window下的tree命令 语法 tree [< ...

  2. spring security OAuth2.0之客户端Client的实现

    项目代码:https://github.com/hankuikuide/microservice-spring-security-oauth2 网上多数的项目客户端都是采用纯js写,或用postman ...

  3. STL之 stack

    栈的常用操作函数:top()push()pop()size()empty() 建栈: stack<int> st; stack<int> st[4]; 四个栈 //可以使用li ...

  4. Pose &&Get的区别

    从一个页面转向另一个页面的请求方式有两种,Post和Get. 如果从原理上来探究他们的区别,涉及到Http传输协议的细节,本文不加探究,只讨论一下表象. 1.Post传输数据时,不需要在URL中显示出 ...

  5. 浅析DES、AES、RSA、MD5加密算法及其应用场景

    对称加密算法DES 算法:一种典型的块加密方法,将固定长度的明文通过一系列复杂的操作变成同样长度的密文,块的长度为64位.同时,DES 使用的密钥来自定义变换过程,因此算法认为只有持有加密所用的密钥的 ...

  6. JS深度比较两个对象是否相等

    /** * 深度比较两个对象是否相等 * @type {{compare: compareObj.compare, isObject: (function(*=): boolean), isArray ...

  7. Git工程开发实践(四)——Git分支管理策略

    A successful Git branching model https://nvie.com/posts/a-successful-git-branching-model/ Git工程开发实践( ...

  8. RetentionPolicy.SOURCE注解应用

    Lombok原理分析: https://www.jianshu.com/p/fc06578e805a

  9. java初学第一天

    public class HellowWorld{ public static void main(String[] args){ System.out.println("jiuxu&quo ...

  10. python-jsonpath、findall返回值提取

    findall import re """ "d"表示取数字0-9, "D"表示不要数字, "w"在正则里面代 ...