什么是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

Celery 之异步任务、定时任务、周期任务相关推荐

  1. Celery - 一个懂得 异步任务 , 定时任务 , 周期任务 的芹菜

    1.什么是Celery? Celery 是芹菜 Celery 是基于Python实现的模块, 用于执行异步定时周期任务的 其结构的组成是由     1.用户任务 app     2.管道 broker ...

  2. python定时任务是异步的吗_python异步实现定时任务和周期任务的方法

    一. 如何调用 def f1(arg1, arg2): print('f1', arg1, arg2) def f2(arg1): print('f2', arg1) def f3(): print( ...

  3. 魔坊APP项目-25-种植园,植物的状态改动、当果树种植以后在celery的异步任务中调整浇水的状态、客户端通过倒计时判断时间,显示浇水道具

    种植园 植物的状态改动 一.当果树种植以后在celery的异步任务中调整浇水的状态 在进行果树种植的时候, 在服务端设置当前果树到等待浇水的redis变量中.通过celery不断进行周期任务的处理, ...

  4. celery源码分析-定时任务

    celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery的定时任务与Django配置 celery也可以执行定时任务来执行相关操作,ce ...

  5. 【Local/docker-compose】安装Celery并启动beat定时任务-20220823

    settings.py(redis由container产生,不引用外部redis) """ Django settings for GAGA project.Genera ...

  6. python分布式任务调度_Python使用Celery分布式异步队列/任务调度(基于Redis) - pytorch中文网...

    今天使用爬虫有些耗时较长,需要使用任务调度,Celery是Python开发的分布式任务调度模块,Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Celery支持的消息服务有Rabb ...

  7. Django配置celery执行异步任务和定时任务

    原生celery,非djcelery模块,所有演示均基于Django2.0 celery是一个基于python开发的简单.灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线 ...

  8. Linux Celery-一个会做异步任务,定时任务的芹菜

    Celery 分布式任务队列 同步与异步 比如说你要去一个餐厅吃饭,你点完菜以后假设服务员告诉你,你点的菜,要两个小时才能做完,这个时候你可以有两个选择 一直在餐厅等着饭菜上桌 你可以回家等着,这个时 ...

  9. python拓展7(Celery消息队列配置定时任务)

    介绍 celery 定时器是一个调度器(scheduler):它会定时地开启(kicks off)任务,然后由集群中可用的工人(worker)来执行. 定时任务记录(entries)默认 从 beat ...

最新文章

  1. 交换机复习笔记 广播风暴抑制
  2. MariaDB 修改存储路径后启动失败问题解决
  3. ORACLE 日期查询
  4. Vue + ESLint——编译错误[‘xxx‘ is defined but never used]解决方案
  5. python 爬取今日头条热点新闻
  6. gta5显示nat较为严格_一年内上涨近3000元/㎡!碧桂园翡翠华府物业管理严格到令人惊叹...
  7. Mysql(对数据库的操作)
  8. 想要应急稳妥过稿电商海报,这组素材少不了!
  9. 【转载】怎样成为优秀的电子工程师?另外求本文出处
  10. javaScript中的变量作用域的闭包处理
  11. 作为IT男必须会Linux服务器被攻击后如何处理!网友:这个要会!
  12. 令牌桶算法和漏桶算法python_如何实现漏桶算法与令牌桶算法
  13. 配置文件填写内网地址和127.0.0.1的区别
  14. 一文教你如何对接【支付宝】支付接口,网友:666啊!
  15. 海康摄像头http抓图
  16. 通过浏览器测试POST请求
  17. 我所经历的一次社会无赖中介的大考验,仅此记录,以介。(北京朝阳区黑中介杨沫)
  18. (二) 简单认识Emacs
  19. 包头学计算机编程,包头小孩编程学校-课程安排
  20. oracle exp 无效dblink,【案例】Oracle dblink 数据库连接dblink insert插入数据时异常分析...

热门文章

  1. ZZUOJ 10508: 数列游戏IV
  2. 连接到kali linux服务器上的MySQL服务器错误
  3. Android 5.1 API 22 所有sdk文件下载地址
  4. 【转载】网络流和最小费用流
  5. HTML5 新标签总汇
  6. 如果您遇到文件或数据库问题,如何重置Joomla
  7. 机器学习笔记1(K-近邻算法)
  8. 使用Firefox或Chrome的雇员表现更好不频繁跳槽
  9. 关于 Android 和 iOS 流畅度的一切
  10. 服务端配置实现AJAX跨域请求