简单使用:

1.目录结构

-app_task.py

-worker.py

-result.py

2.在需要进行异步执行的文件app_task.py中导入celery,并实例化出一个对象,传入消息中间和数据存储配置参数

broker = 'redis://127.0.0.1:6379/1' #使用redis第一个库

backend = 'redis://127.0.0.1:6379/2' #使用redis第二个库

cel = celery.Celery('test',broker=broker,backend=backend)

3.在需要进行异步执行的函数上添加装饰器

@cle.taskdefadd(x,y):return x+y

4.新建文件worker.py用来添加任务

from app_task importadd

result= add.delay(4,2)print(result) #此结果不是add执行结果,而是放入消息队列中的一个任务id

5.新建文件result.py用来接收结果

from celery.result importAsyncResultfrom app_task importcel#2e76b24d-364f-46b7-a0eb-f69f663dfb0d

async1 = AsyncResult(id="56db7832-d0f4-4b9b-ba92-4fb08d0f9592", app=cel) #id处放置消息队列中任务的id

if async1.successful(): #判断执行任务成功

result =async1.get()print(result)#result.forget() # 将结果删除

elifasync1.failed():print('执行失败')elif async1.status == 'PENDING':print('任务等待中被执行')elif async1.status == 'RETRY':print('任务异常后正在重试')elif async1.status == 'STARTED':print('任务已经开始被执行')

6.添加任务+启动工人+查看结果

1.运行worker.py

2.终端中输入命令:celery worker -A app_task -l info -P eventlet # 其中app_task为配置参数的文件名

3.运行result.py查看结果

多任务使用:

1.目录结构,将简单使用中的app_task改为一个celery_task文件夹,其中放至少两个文件:celery.py(名字固定)/task1.py(方具体任务的文件)/根据需求放置其他任务文件

-celery_task

-celery.py # 配置参数

-task1.py # 任务文件,根据需求添加

-task2.py

...

-worker.py # 添加任务

-result.py # 查看结果

2.在任务文件task1.py中导入cel,并以装饰器形式加在函数上

from .celery importcel

@cel.taskdefmul(x,y):return x*y

3.celery.py中配置参数

from celery importCelery

cel=Celery('celery_demo',

backend= 'redis://127.0.0.1:6379/1',

broker= 'redis://127.0.0.1:6379/2',

include=['celery_task.task1','celery_task.task2']

)

cel.conf.timezone= 'Asia/Shanghai'cel.conf.enable_utc= False

4.worker.py和简单使用中的相同

5.result.py与简单使用中的相同

6.添加任务+启动工人+查看结果

1.运行worker.py

2.终端中输入命令:celery worker -A celery_task -l info -P eventlet    # 其中celery_task为文件夹名

3.运行result.py查看结果

延时任务:

1.目录结构

-celery_task

-celery.py

-task1.py

-task2.py

...

-worker.py

-result.py

2.task1.py与多任务相同

3.celery.py与多任务相同

4.worker.py中将传入的时间改为指定时间

ctime = datetime.now() #当前时间

utc_time = datetime.utcfromtimestamp(ctime.timestamp()) #转成本地时间

time_delta = timedelta(seconds=30) #设置延时30s

task_time = utc_time+time_delta #设定时间点为30s后

ret1 = add.apply_async(args=[2,3],eta=task_time)

5.result.py与简单使用中的相同

6.与多任务相同

定时任务:

1.目录结构,去掉worker.py,添加任务变为在终端输入命令

-celery.py

-celery.py

-task1.py

-task2.py

...

-result.py

2.task1.py与多任务相同

3.celery.py中与定时任务相比,添加下面参数

1.设定时间间隔,循环执行

cel.conf.beat_schedule ={'add-every-10-seconds':{ #名字随意起

'task': 'celery_task.task1.mul', #指定要执行的任务

'schedule': timedelta(seconds=2), #指定时间间隔

'args': (2,3) #传入参数

}

}

2.指定年月日具体时间,循环执行

from celery.schedules importcrontab

cel.conf.beat_schedule={'add-every-10-seconds':{'task': 'celery_task.task1.mul','schedule': crontab(minute=28,hour=2,day_of_month=23,month_of_year=6),'args': (6,3)

}

}

4.没有worker.py

5.result.py与简单使用中的相同

6.添加任务+启动工人+查看结果

1.启动一个终端,输入:celery beat -A celery_task -l info # celery_task为文件夹名

2.再启动一个终端,输入:celery worker -A celery_task -l info -P eventlet

3.运行result.py查看结果

python elif可以单独使用_Celery在python中的单独使用相关推荐

  1. python elif报错_解决python循环的elif报错的方法

    解决python循环的elif报错的方法 发布时间:2020-08-05 15:36:51 来源:亿速云 阅读:96 作者:小新 解决python循环的elif报错的方法?这个问题可能是我们日常学习或 ...

  2. python elif格式_python中elif 结构语句怎么判断?

    if语句最基本的知识,相信小伙伴们已经学会了.有的小伙伴想挑战更高阶的使用,小编就考考大家,elif是什么呢?知道答案的小伙伴又会使用elif吗?当然,在if的基础上扩展,elif肯定是稍微难一点的. ...

  3. 零基础Python完全自学教程11:Python中的选择语句

    欢迎你来到站长学堂,学习站长在线出品的在线课程<零基础Python完全自学教程>今天给大家分享的是第11课<Python中的选择语句>.本节课主要内容有:最简单的if语句.if ...

  4. python类装饰器详解-Python类中的装饰器在当前类中的声明与调用详解

    我的Python环境:3.7 在Python类里声明一个装饰器,并在这个类里调用这个装饰器. 代码如下: class Test(): xx = False def __init__(self): pa ...

  5. python if语句多个条件-Python中if有多个条件怎么办

    Python中if有多个条件怎么办 python中if有多个条件,可以使用and.or.elif关键字来连接. Python 编程中 if 语句用于控制程序的执行,基本形式为:(推荐:python视频 ...

  6. python if语句多个条件-Python中if有多个条件处理方法

    Python中if有多个条件怎么办 python中if有多个条件,可以使用and.or.elif关键字来连接. Python 编程中 if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行 ...

  7. 以下选项中python用于异常处理结构_《Python 程序设计》复习题

    目录 填空题 一.基础知识 二.序列 三.选择结构与循环结构和函数及面向对象.文件 选择题 一.Python 基础语法 二.基本数据类型 三.程序的控制结构 四.函数和代码复用 五.组合数据类型 六. ...

  8. 关于python浮点数类型错误的是_关于Python语言的浮点数类型,以下选项中描述错误的是...

    [单选题]关于Python字符串,以下选项中描述错误的是 [单选题]以下程序的输出结果是: lcat =["狮子","猎豹","虎猫",&q ...

  9. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

最新文章

  1. eclipse中开发python
  2. 富文本HTML编辑器UEditor
  3. mysql远程无法登陆_无法远程登陆MySQL数据库几种解决办法
  4. ubuntu设置自动休眠
  5. 什么是Intel LBR(上次分支记录),BTS(分支跟踪存储)和AET(体系结构事件跟踪)?
  6. 写给嵌入式方向的某些同学 - 基于WINCE系统的程序开发[不完整版]
  7. 破解wifi时遇到rtl8187 - [phy1]SIOCSIFFLAGS: Name not unique on network
  8. ROS路由器ethernet接口:
  9. 中国天气网天气城市ID
  10. 【推荐】中国计算机学会推荐国际学术会议和期刊目录——CCF的会议与期刊分级
  11. ICPC World Finals 2015 D题 - Cutting Cheese 【二分答案】【球缺体积公式】
  12. 准备好了吗?GNN 图神经网络 2021 年的5大应用热点
  13. cpu性能测试软件 国际象棋,国际象棋测试
  14. 控制面板Plesk, cPanel, DirectAdmin, whmcs,WDCP, AMH比较
  15. ionic自定义图标(ion-icon)
  16. 入库出库JAVA技术详情_基于Java_EE的入库出库管理系统
  17. 锐捷服务器显示dns无法上网,上网常见故障排查指引-肇庆学院信息中心 Zhaoqing University Information Center...
  18. vscode插件不兼容无法安装
  19. OGG跳过事务 logdump FORCETRANS begin now
  20. 中国超级计算机gpu,英伟达(NVIDIA)Tesla GPU为全球最快的超级计算机提供动力支持...

热门文章

  1. mysql 包含的那些文件
  2. c++构造函数详解(转)
  3. 在PHP中利用wsdl创建标准webservice
  4. C#开发高亮语法编辑器(一)——TextBox ,RichTextBox
  5. kangle支不支持PHP_【转载】PHP调用kangle的API
  6. python手机端给电脑端发送数据_期货交易软件有哪些比较好用?分手机端和电脑端...
  7. Zookeeper Watch监听
  8. Java 集合体系详解——List体系有序集合
  9. 什么是mybatis,mybatis有什么特点
  10. [转载] Java序列化的几种方式以及序列化的作用