python 任务调度 celery_斑马斑马-09-白云之上-python任务调度之celery

一、celery简介

1:celery是什么

Celery是一个python开发的异步分布式任务调度模块。

2:celery是使用场景

异步任务:将耗时操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音视频处理等等

定时任务:定时执行某件事情,比如每天数据统计

3:celery特点

简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的。

高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务。

快速:一个单进程的celery每分钟可处理上百万个任务。

灵活: 几乎celery的各个组件都可以被扩展及自定制。

4:工作原理

Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成。

消息中间件:Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis等等

任务执行单元:Worker是Celery提供的任务执行的单元,worker并发的运行在分布式的系统节点中。

任务结果存储:Task result store用来存储Worker执行的任务的结果,Celery支持以不同方式存储任务的结果,包括AMQP, redis等

二、Hello,Celery

1:版本介绍

在Django项目的环境下配合celery和redis使用异步调用

Django==3.0.4

celery==3.1.26.post2

django-celery==3.3.1

django-redis==4.7.0

redis==2.10.6

安装相应的软件包

pip install redis==2.10.6 -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install django-redis==4.7.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

2:场景介绍(异步)

比如,想泡壶茶喝。当时的情况是:开水没有;水壶要洗,茶壶,茶杯要洗;火已生了,茶叶也有了。怎么办?

办法甲:洗好水壶,灌上凉水,放在火上;在等待水开的时间里,洗茶壶、洗茶杯、拿茶叶;等水开了,泡茶喝。

办法乙:先做好一些准备工作,洗水壶,灌水烧水;坐待水开了,洗茶壶茶杯,拿茶叶;一切就绪,泡茶喝。

2.1 代码架构

2.2 首先要保证redis是可以正常使用的,参考斑马斑马-05-白云之上-Redis初识

from redis importStrictRedisfrom django_redis importget_redis_connection

sr= StrictRedis("39.99.213.203", port=6379, db=1)defset_redis():

res= sr.set("name", "zhangsan")print(res)defget_redis():

res= sr.get("name")print(res)if __name__ == '__main__':#设置值

set_redis()#获取值

get_redis()

redis测试

2.3 设置url和views还有茶方法,至此计划B可以运行

from django.contrib importadminfrom django.urls importpathfrom course.views importplanA,planB

urlpatterns=[

path('admin/', admin.site.urls),

path('planA/',planA,name='planA'),

path('planB/', planB, name='planB')

]

url.py

from django.shortcuts importrenderfrom django.http importJsonResponsefrom course.tasks importCourseTaskfrom datetime importdatetimeimporttimefrom course import茶#Create your views here.

defplanA(request):

start_time=time.time()

start_= time.strftime("%H:%M:%S", time.localtime())print('A计划开始', start_time)

pc=茶.泡茶()

pc.洗水壶()#1

CourseTask.apply_async(('洗茶壶','洗茶杯', '拿茶叶'), queue='work_queue')

pc.烧水()#15

end_time =time.time()

end_= time.strftime("%H:%M:%S", time.localtime())

spendtime= str((end_time -start_time))print('B计划结束', end_time)

dict_content={}

dict_content.setdefault("beginTime", start_)

dic

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,有几个常见的任务调度框架可以使用。其中包括Rocketry和Celery。Rocketry是一个任务调度框架,它提供了任务级别和会话级别两种方式来调度任务。在任务级别调度中,可以使用Rocketry库中的功能来定义任务和参数,并在给定的时间间隔内运行任务。任务级别调度的代码示例可以参考引用中的示例代码。而在会话级别调度中,可以使用Rocketry库中的参数来定义任务,并通过参数传递来调度任务。会话级别调度的代码示例可以参考引用中的示例代码。 另外一个常见的Python任务调度框架是CeleryCelery是一个分布式任务调度框架,它可以帮助我们处理复杂的任务队列。Celery非常易于集成到一些Web开发框架中,并且可以通过自身命令启动服务来为其他项目提供异步解决任务的需求。Celery的使用场景非常广泛。有关Celery的更多信息可以参考引用中的描述。 所以,如果你需要在Python中进行任务调度,你可以选择使用Rocketry或Celery这两个常见的任务调度框架。具体选择哪一个取决于你的需求和项目的特点。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python任务调度框架Rocketry](https://blog.csdn.net/lly1122334/article/details/128079341)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [python常用库之分布式任务调度框架Celery](https://blog.csdn.net/inthat/article/details/128131457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值