首页 > 其他分享 >celery异步任务、延迟任务、定时任务

celery异步任务、延迟任务、定时任务

时间:2023-07-06 09:35:24浏览次数:32  
标签:异步 task app add datetime celery 任务

异步任务

# 比如有个函数add,需要传入两个参数,使用delay就是异步任务
# 配置脚本详见:https://www.cnblogs.com/smyz/p/17525174.html
res = add.delay(1, 2)

延迟任务

@app.task
def add(a, b):
    print('正在计算中')
    time.sleep(5)
    return a + b

# 需要传入一个时间对象
from datetime import datetime, timedelta
# 拿到utc的当前时间datetime.utcnow() 因为我的环境是utc时间
# timedelta是生成的时间类型的值可以与时间进行运算,直接运算是不行的
eta = datetime.utcnow() + timedelta(seconds=10)

# 10秒之后执行这个任务
res = add.apply_async(args=[这里面是add函数的参数], eta=时间参数)
# 例如:
res = add.apply_async(args=['add'], eta=eta)
  • 修改时区方法
# 时区
app.conf.timezone = 'Asia/Shanghai'
# 是否使用UTC
app.conf.enable_utc = False

定时任务

  • 定时任务需要启动beat和worker
  • beat: 定时提交任务的进程
  • 启动方法:
cd scripts
celery -A celery_task beat -l info
celery -A celery_task worker -l info -P eventlet
  • 内容
# 时区
app.conf.timezone = 'Asia/Shanghai'
# 是否使用UTC
app.conf.enable_utc = False

# 任务的定时配置一:每隔多久执行一次
from datetime import timedelta
from celery.schedules import crontab
app.conf.beat_schedule = {
    'my_task': {  # 这个名字可以随便写
        'task': 'celery_task.tasks.add',  # 这里是任务名字(需要写全路径)
        'schedule': timedelta(seconds=3),  # 传入一个时间对象,意思是每三秒执行一下
        'args': (300, 150),  # 要传入的参数
    },
    'my_task2':{...},
    'my_task3':{...}
}

# 任务的定时配置二:与linux crontab相同,写好什么时候执行
from datetime import timedelta
from celery.schedules import crontab
app.conf.beat_schedule = {
    'my_task': {  # 这个名字可以随便写
        'task': 'celery_task.tasks.add',  # 这里是任务名字(需要写全路径)
        'schedule': crontab(hour=8, day_of_week=1),  # 每周一早八点,需要导入crontab包
        'args': (300, 150),  # 要传入的参数
    },
    'my_task2':{...},
    'my_task3':{...}
}

标签:异步,task,app,add,datetime,celery,任务
From: https://www.cnblogs.com/smyz/p/17528999.html

相关文章

  • aiohttp模块引出_aiohttp+多任务异步协程实现异步爬虫
    1.为什么要用aiohttp模块引出: 2.异步模块aiohttp对比requests基于同步的区别: 3.需要在response.text()前面添加await进行手动挂起: 4.response.text()前面一定要添加await再次运行程序告警取消: 5.异步爬虫get或post中写入的参数: ......
  • js 异步 任务 题目解析(chatgpt bug了?)
    最近遇到一道题如下,求输出结果感觉还是蛮有意思的,找chatgpt做了一下我是题asyncfunctionasync1(){console.log('1');awaitasync2();console.log('2');}asyncfunctionasync2(){console.log('3');}console.log('4')setTimeout(func......
  • 进程概念、进程的并发和并行、同步异步阻塞非阻塞、开启进程Process类,属性,方法、如何
    进程概念#进程、线程都是操作系统中的基本概念,也就是说进程和线程都是操作系统层面的东西,专业术语表达就是进程和线程的使用都是有操作系统来调度的.而不时有我们程序员自己来操控的在操作系统这门课里面,进程和线程是操作系统的概念,协程不是操作系统中的概念,而是我们程序员层......
  • 消费任务进行审核文章
    文章审核:按照固定的频率拉取任务,每秒钟拉取一次,再审核文章。@AutowiredprivateWmNewsAutoScanServicewmNewsAutoScanService;/***消费任务【拉取任务】*/@Scheduled(fixedRate=1000)@OverridepublicvoidscanNewsByTask(){......
  • python基础 进程、操作系统调度算法、同步异步、开启进程、process类的参数、进程锁、
    进程概念进程、线程都是操作系统中的基本概念,也就是说进程和线程都是操作系统层的东西,专业术语表达就是进程和线程的使用都是由操作系统来调度的‘,而不是由我们来操控的。在操作系统这门课里,进程和线程是操作系统的概念,协程不是操作系统中的概念,而是我们程序层面的......
  • celery安装和使用
    安装pipinstallcelery简单使用安装完celery后,会生成一个可执行文件:celery,与pip命令在一个目录下,也就是scripts下。注意:celery官方不支持在windows上启动,如果确需要在windows上启动服务,需要使用一个第三方模块:eventlet支持pipinstalleventlet启动命令4.x之前版本Linux......
  • 【Netty】「萌新入门」(四)异步编程模型:利用 Future 和 Promise 提高性能与响应能力
    前言本篇博文是《从0到1学习Netty》中入门系列的第四篇博文,主要内容是介绍Netty中Future与Promise的使用,通过使用异步的方式提高程序的性能和响应速度,往期系列文章请访问博主的Netty专栏,博文中的所有代码全部收集在博主的GitHub仓库中;为什么要使用异步?使用异步编程模式......
  • python celery 使用
    目录结构配置点击查看代码fromceleryimportCelery,platformsfromkombuimportExchange,Queueplatforms.C_FORCE_ROOT=Truebroker='redis://127.0.0.1:6380/1'backend='redis://127.0.0.1:6380/2'app=Celery('sxj',b......
  • 未来数据定时刷新——从zset中获取预设时间内的任务添加到list中
    未来数据定时刷新——实现步骤:定时任务/每分钟————》未来数据的keys————》按照分值查询zset,判断数据是否到期——到期》同步到Redis中的list 1、如何获取zset中所有的key?keys模糊匹配,future。效率低SCNA命令:SCAN命令是一个基于游标的迭代器,SCAN命令......
  • Windows设置定时任务运行脚本/程序
    1、win+x打开计算机管理工具2、点击任务计划程序创建任务3、创建任务名称4、创建定时任务5、选择要运行的脚本及程序6、结果......