Celery 之异步任务、定时任务、周期任务

什么是Celery?
Celery 是芹菜
Celery 是基于Python实现的模块, 用于执行异步定时周期任务的
其结构的组成是由
    1.用户任务 app
    2.管道 broker 用于存储任务 官方推荐 redis rabbitMQ  / backend 用于存储任务执行结果的
    3.员工 worker

 

一 异步任务

 1 from celery import Celery
 2 import time
 3 
 4 my_task = Celery('tasks', broker='redis://127.0.0.1:6379', backend='redis://127.0.0.1:6379')
 5 
 6 
 7 @my_task.task
 8 def func(x, y):
 9     time.sleep(20)
10     return x + y
s1
1 from s1 import func
2 
3 ret = func.delay(2, 4)
4 
5 sid = ret.id
6 print(ret.id)
s2
 1 from celery.result import AsyncResult
 2 from asyn.s1 import my_task
 3 
 4 async_task = AsyncResult(id="8789dd69-437a-47c2-a3a5-1cd5c3ba9c73", app=my_task)
 5 
 6 if async_task.successful():
 7     result = async_task.get()
 8     print(result)
 9 
10 else:
11     print('任务还未完成')
s3

ps: eventlet 是一个python的三方库 需要使用 pip安装 pip install eventlet

 celery worker -A s1 -l INFO -P eventlet  # 创建worker 执行代码

二、周期任务

创建两个任务

task_one:

1 from s6 import celery_task
2 
3 
4 @celery_task.task
5 def my_func1_task_one(a,b):
6     return f"my_func1_task_one return{a}{b}"
View Code

task_two

1 from s6 import celery_task
2 
3 
4 @celery_task.task
5 def my_func1_task_two(a, b):
6     return f"my_func1_task_one return{a}{b}"
View Code

设置执行周期时间

 1 # 周期任务
 2 
 3 from celery import Celery
 4 from celery.schedules import crontab
 5 
 6 celery_task = Celery("task",
 7                      broker="redis://127.0.0.1:6379",
 8                      backend="redis://127.0.0.1:6379",
 9                      include=["task_one","task_two"])
10 
11 #我要要对beat任务生产做一个配置,这个配置的意思就是每10秒执行一次Celery_task.task_one任务参数是(10,10)
12 celery_task.conf.beat_schedule ={
13     "each10s_task": {
14         "task":"task_one.my_func1_task_one",
15         "schedule": 10,  # 每10秒钟执行一次
16         "args": (10, 20)
17     },
18     "each5s_task": {
19         "task": "task_two.my_func1_task_two",
20         "schedule": 5,  # 每5秒
21         "args": (50, 60)
22     },
23     # "each24hours_task": {
24     #     "task": "Celery_task.task_one.one",
25     #     "schedule": crontab(hour=24), # 每24小时执行一次
26     #     "args": (10, 10)
27     # }
28 
29 }
30 
31 #以上配置完成之后,还有一点非常重要
32 # 不能直接创建Worker了,因为我们要执行周期任务,所以首先要先有一个任务的生产方
33 # celery beat -A Celery_task
34 # celery worker -A Celery_task -l INFO -P eventlet
View Code

执行指令:

1、创建Worker的方式并没有发行变化,但是这里要注意的是,每间隔一定时间后需要生产出来任务给Worker去执行,这里需要一个生产者beat

celery beat -A Celery_task  #创建生产者 beat 你的 schedule 写在哪里,就要从哪里启动

2、celery worker -A Celery_task -l INFO -P eventlet

友情链接

 

转载于:https://www.cnblogs.com/liaopeng123/p/10395855.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264781.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

堆栈认知——栈溢出实例(ret2libc)

参考:栈溢出实例–笔记三(ret2libc) 地址:https://qingmu.blog.csdn.net/article/details/119481681 目录1、栈溢出含义及栈结构2、ret2libc基本思路3、实战3.1、二进制程序3.2、查看栈结构3.3、第一次栈溢出3.4、第二次栈溢出1、…

halcon 单通道图像转成3通道_halcon图像处理基本运算

halcon图像处理基本运算图像处理最基本的操作包括颜色空间转换,各种代数运算,放射变换等。通过熟悉这些常见的操作,可以对图像有基本的认识,尤其是对刚开始接触视觉图像处理的人而言,熟悉这些操作,可以快速…

ASP.NET MVC学前篇之Ninject的初步了解

ASP.NET MVC学前篇之Ninject的初步了解1.介绍废话几句,Ninject是一种轻量级的、基础.NET的一个开源IoC框架,在对于MVC框架的学习中会用到IoC框架的,因为这种IoC开源框架有很多,本篇的主题只有一个,就是让阅读过本篇幅的…

技术术语积累

目录ASCII码表ASCII打印字符ASCII非打印控制字符ASCII扩展打印字符C语言基本数据类型整型变量整型常量实数(浮点)类型实型(浮点)常量字符变量字符常量C语言中printf打印形式%2d,%-2d,%.2d,%02d&…

下滑加载更多js_专治:卫生间免砸砖,房顶漏水,JS堵漏王水不漏,厂家三包产品,免费成熟配方(点开看更多)...

免砸砖JS-堵漏王水不漏白色粉状,加水溶解后即为JS堵漏王水不漏。防水液,为无色透明液体,不燃、不爆、不腐蚀。本产品是新型多功能纳米水溶性防水剂。具有超强的渗透后微膨胀结晶功能,能充分填补填满物体毛细管,从而达到…

linux设置开机自启动

一.、在/etc/rc.local文件中添加自启动命令 执行命令: 编辑"/etc/rc.local",添加你想开机运行的命令 运行程序脚本:然后在文件最后一行添加要执行程序的全路径。 例如,每次开机时要执行一个hello.sh,这个脚本…

JavaScript 初学者应知的 24 条最佳实践

原文:24 JavaScript Best Practices for Beginners (注:阅读原文的时候没有注意发布日期,觉得不错就翻译了,翻译到 JSON.parse 那一节觉得有点不对路才发现是 2009 年发布的文章,不过还是不错的啦。另外&am…

正点原子FreeRTOS(下)

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

Solaris 下 Oracle impdp 过程中出现的问题

ORA-39002: invalid operationORA-39070: Unable to open the log file.ORA-29283: invalid file operationORA-06512: at "SYS.UTL_FILE", line 475ORA-29283: invalid file operation解决方法参考1:今天在使用IMPDP完成数据导入的过程中遇到“ORA-39002…

正点原子FreeRTOS(中)

更多干货推荐可以去牛客网看看,他们现在的IT题库内容很丰富,属于国内做的很好的了,而且是课程刷题面经求职讨论区分享,一站式求职学习网站,最最最重要的里面的资源全部免费!!!点击进…

Android应用开发中的风格和主题(style,themes)

越来越多互联网企业都在Android平台上部署其客户端,为了提升用户体验,这些客户端都做得布局合理而且美观.......Android的Style设计就是提升用户体验的关键之一。Android上的Style分为了两个方面: Theme是针对窗体级别的,改变窗体…

windows上安装mysql5.7.24

平时自己做测试的时候,自己安装一个mysql还是很有必要的,网上教程很多,但是自己操作过程中还是遇到了一些问题,这里记录一下安装过程。 一、下载mysql https://downloads.mysql.com/archives/community/ 我使用的是5.7.24的解压版…

gb酱油和gbt酱油哪个好_都是酱油,生抽好还是味极鲜好?老板:两者差别很大,别买错了...

导读:都是酱油,生抽好还是味极鲜好?老板:两者差别很大,别买错了一道美食的完成不只是依赖掌厨的高超技艺,还与炒制的锅具、所用的调料等有关。其中最重要的就是调料,有了调料的辅助,…

数字万用表的使用

参考:连3岁小孩子都能看懂的万用表使用方法 地址:https://www.bilibili.com/video/BV1Gx411z7x2?p1&vd_sourcecc0e43b449de7e8663ca1f89dd5fea7d 目录万用表外观测量电阻测量通断/二极管测量电容测量温度测量电流测量电压测量三极管万用表外观 测量…

在GridView开头插入自动编号的方法

网上看了很多方法,发现都是照抄别人,而且,都是把第一列替换掉了,往往不是我们的理想结果。经过本人的实践,下面方法觉得更好用一些。就是不知道数据量过大时,效率怎么样,不过既然能用&#xff0…

Zookeeper:fsync超时导致实例异常

一、问题描述 2019-02-19 08:44左右,实时计算服务重启,报错显示找不到zk集群的leader节点,同时ZooKeeper集群有告警显示连接超时: 指标[连接耗时(ms)18221]符合告警规则[连接耗时(ms)>3000] 二、排查过程 查看当前集群状态&…

断言(assert)的用法

参考:https://www.runoob.com/w3cnote/c-assert.html 目录作用总结与注意事项Demo作用 assert 是个宏,并且作用并非"报错"。 assert() 的用法像是一种"契约式编程",程序满足我的假设条件,才能正常良好的运作…

马云语录,非常值得一看(转)

来源:计算机网1999至今 在杭州设立研究开发中心,以香港为总部,创办阿里巴巴网站(Alibaba.com) 孙正义跟我有同一个观点,一个方案是一流的Idea加三流的实施;另外一个方案,一流的实施,三流的Idea,…

centos7 docker安装和使用_入门教程

centos7 docker安装和使用_入门教程 原文:centos7 docker安装和使用_入门教程说明:本文也是参考互联网上的文章写的,感谢相关作者的贡献。 操作系统 64位CentOS Linux release 7.2.1511 (Core) 配置好IP:192.168.1.160 修改yum源 目的是提升对…

C语言中字符串和字符数组的区别

参考:C语言中字符串和字符数组的区别 参考:字符数组和字符串的区别,C语言字符数组和字符串区别详解 这里写目录标题区别代码分析一代码分析二总结区别 (1)C语言中,没有字符串类型但可以用字符数组模拟字符…