Python Celery异步任务队列使用方法解析

 更新时间:2020年08月10日 09:45:50   作者:Yi_warmth  
这篇文章主要介绍了Python Celery异步任务队列使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Celery是一个异步的任务队列(也叫做分布式任务队列),一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需要的工具。

celery的优点

1:简单,容易使用,不需要配置文件

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

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

4:灵活,几乎celery的各个组件都可以被扩展

celery应用场景

1:异步发邮件,一般发邮件等比较耗时的操作,这个时候需要提交任务给celery就可以了,由worker进行发邮件操作

2:有些跑批量接口任务,需要耗时较长,也可以做成异步任务

3:定时调度任务

Celery与Django一起使用(以发送短信为例)

独立于项目新建一个package包

在package包中新建一个名为sms的package包

新建tasks.py文件

#定义耗时的函数
from utils.ytx_sdk.sendSMS import CCP
from celery_tasks.main import app

#为函数添加装饰器,这个函数就成为了celery的任务
@app.task
def send_sms_code(mobile,code,expires,template_id):
  try:
    # CCP.sendTemplateSMS(mobile,code,expires,template_id)
    print(code)
  except:
    return '发送短信失败'

在package包中新建config.py

内容如下(中间人,接收生产者发来的消息即Task,将任务存入队列。任务的消费者是Worker。Celery本身不提供队列服务,推荐用Redis或RabbitMQ实现队列服务。)

#指定代理人队列==>redis
broker_url='redis://127.0.0.1:6379/15'

在package包中新建main.py

内容如下(需要将task注册到celery应用中)

#启动工人的文件
from celery import Celery
# 为celery使用django配置文件进行设置
import os
if not os.getenv('DJANGO_SETTINGS_MODULE'):
  os.environ['DJANGO_SETTINGS_MODULE'] = 'yinyue.settings.dev'
# 创建celery应用
app = Celery('yinyue')
# 导入celery配置
app.config_from_object('celery_tasks.config')
# 自动注册celery任务
app.autodiscover_tasks([
  'celery_tasks.sms'
])

在django框架对应模块的视图中使用

#调用celery的任务:任务名.delay(参数)
send_sms_code.delay(mobile,code,constants.SMS_CODE_EXPIRES/60,1)

启动celery服务: celery -A celery_tasks.main worker -l info

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 深入了解Python 方法之类方法 & 静态方法

    深入了解Python 方法之类方法 & 静态方法

    这篇文章主要介绍了Python类方法 & 静态方法的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • Python实现查询某个目录下修改时间最新的文件示例

    Python实现查询某个目录下修改时间最新的文件示例

    这篇文章主要介绍了Python实现查询某个目录下修改时间最新的文件,涉及Python使用os与shutil模块针对文件的遍历、属性获取、读写等相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • windows 10 设定计划任务自动执行 python 脚本的方法

    windows 10 设定计划任务自动执行 python 脚本的方法

    这篇文章主要介绍了windows 10 设定计划任务自动执行 python 脚本的方法,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Python实现替换文件中指定内容的方法

    Python实现替换文件中指定内容的方法

    这篇文章主要介绍了Python实现替换文件中指定内容的方法,涉及Python文件读写、字符串替换等相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • Python通过tkinter实现百度搜索的示例代码

    Python通过tkinter实现百度搜索的示例代码

    这篇文章主要介绍了Python通过tkinter实现百度搜索的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • python不同版本的_new_不同点总结

    python不同版本的_new_不同点总结

    在本篇内容里小编给大家整理了一篇关于python不同版本的_new_不同点总结内容,有兴趣的朋友们可以学习下。
    2020-12-12
  • Python学习之循环方法详解

    Python学习之循环方法详解

    循环是有着周而复始的运动或变化的规律;在 Python 中,循环的操作也叫做 遍历。与现实中一样,Python 中也同样存在着无限循环的方法与有限循环的方法。本文将通过示例详细讲解Python中的循环方法,需要的可以参考一下
    2022-03-03
  • python爬虫基本知识

    python爬虫基本知识

    最近在做一个项目,这个项目需要使用网络爬虫从特定网站上爬取数据,于是乎,我打算写一个爬虫系列的文章,与大家分享如何编写一个爬虫。下面这篇文章给大家介绍了python爬虫基本知识,感兴趣的朋友一起看看吧
    2018-03-03
  • 用Python将库打包发布到pypi

    用Python将库打包发布到pypi

    这篇文章主要介绍了用Python将库打包发布到pypi,文中有很详细的代码作参考,对正在学习python的小伙伴们有很好的学习价值,需要的朋友可以参考下
    2021-04-04
  • python非递归全排列实现方法

    python非递归全排列实现方法

    下面小编就为大家带来一篇python非递归全排列实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04

最新评论