Celery

什么是Celery?

Celery是一种简单/高效/灵活的即插即用的分布式任务队列.

Celery应用场景?

需要异步处理的任务,发邮件/发短信/上传等耗时的操作.最终到达提升用户体验的目的.

Celery的模式

Celery主要是由Broker(中间人)和Worker(任务处理者)组成,执行流程为客户端发起任务--->Bocker接收任务,分配给--->Worker处理任务.

Celery安装

pip install -U Celery

基本配置:

broker指定消息队列保存的位置

backend指定执行结果保存的位置

from celery import Celery

# 增加配置,redis为例
# 第一种
app = Celery('demo',
backend='redis://:127.0.0.1:6379/2',
broker='redis://:127.0.0.1:6379/1')
# 第二种
app = Celery('demo')
app.conf.update(
broker_url='redis://:127.0.0.1:6379/1',
result_backend='redis://:127.0.0.1:6379/2',
)
# 第三种,导入.py模块,config中指定broker_url/result_backend
app = Celery('demo')
app.config_from_object('config')

基本使用

1.配置,创建应用,如上.

2.将异步任务加入到bocker中.

使用装饰器@app.task来将任务加入到bocker中.

@app.task
def demo_task():
print('demo')
return '任务结果'

3.开启worker,处理任务

task为创建应用的.py文件,也就是在app所在模块的统计目录下执行

celery -A tasks worker --loglevel=info

4.调用任务

from tasks import demo_task
demo_task.delay() # 如果任务有参数,直接在delay()中传入

5.保存结果(非必须)

# ret是一个AsyncResult对象,保存有返回值等信息.
ret = demo_task.delay()
# 返回值
ret.result

其他功能

group: 一组任务并行执行,返回一组返回值,并可以按顺序检索返回值。

chain: 任务一个一个执行,一个执行完将执行return结果传递给下一个任务函数.

Celery基本使用的更多相关文章

  1. 异步任务队列Celery在Django中的使用

    前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...

  2. celery使用的一些小坑和技巧(非从无到有的过程)

    纯粹是记录一下自己在刚开始使用的时候遇到的一些坑,以及自己是怎样通过配合redis来解决问题的.文章分为三个部分,一是怎样跑起来,并且怎样监控相关的队列和任务:二是遇到的几个坑:三是给一些自己配合re ...

  3. tornado+sqlalchemy+celery,数据库连接消耗在哪里

    随着公司业务的发展,网站的日活数也逐渐增多,以前只需要考虑将所需要的功能实现就行了,当日活越来越大的时候,就需要考虑对服务器的资源使用消耗情况有一个清楚的认知.     最近老是发现数据库的连接数如果 ...

  4. celery 框架

    转自:http://www.cnblogs.com/forward-wang/p/5970806.html 生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据 ...

  5. celery使用方法

    1.celery4.0以上不支持windows,用pip安装celery 2.启动redis-server.exe服务 3.编辑运行celery_blog2.py !/usr/bin/python c ...

  6. Celery的实践指南

    http://www.cnblogs.com/ToDoToTry/p/5453149.html Celery的实践指南   Celery的实践指南 celery原理: celery实际上是实现了一个典 ...

  7. Using Celery with Djang

    This document describes the current stable version of Celery (4.0). For development docs, go here. F ...

  8. centos6u3 安装 celery 总结

    耗时大概6小时. 执行 pip install celery 之后, 在 mac 上 celery 可以正常运行, 在 centos 6u3 上报错如下: Traceback (most recent ...

  9. celery 异步任务小记

    这里有一篇写的不错的:http://www.jianshu.com/p/1840035cb510 自己的"格式化"后的内容备忘下: 我们总在说c10k的问题, 也做了不少优化, 然 ...

  10. Celery 框架学习笔记

    在学习Celery之前,我先简单的去了解了一下什么是生产者消费者模式. 生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是 ...

随机推荐

  1. 转战JS(1) 初探与变量类型、运算符、常用函数与转换

    转战JS(1)初探与变量类型.运算符.常用函数与转换 做为一名.NET后台开发人员,正考滤向Web前端开发转型,之前也写过一代前端代码,可是当再回头看JS,并有转向它的意愿的时候,突然发现:原来JS不 ...

  2. 2.3Python基础语法(三)之输入输出

    返回总目录 目录: 1.input输入 2.print输出 (一)input输入 1.input的处理方式 # 输入input string = input("请输入一个字符串:" ...

  3. unity StrangeIoc

    已经很久没有写博客,主要原因还是自我荒废了太久,在学习上失去了动力.最近来新的公司实习,以前都是做项目的开发,现在被调到框架组,主要从事的是框架维护还有开发.学习了许多新的知识还有优秀的框架,今天就写 ...

  4. SDN2017 第三次实验作业

    实验目的 在给定如上实验拓扑情况下,用vlan得到下列虚拟网段 h1--h4互通 h2--h5互通 h3--h6互通 其余主机间无法通信 实验步骤 1. 创建拓扑 #! /usr/bin/python ...

  5. 很不错的关于依赖注入和AOP的系列文章

    http://blog.csdn.net/tittop/article/details/6716033

  6. Redis系列三:reids常用命令

    全局命令 keys *  查看所有键 dbsize 查看的是当前所在redis数据库的键总数 如果存在大量键,线上禁止使用此指令 exists key 检查键是否存在,存在返回1,不存在返回0 del ...

  7. 2298: [HAOI2011]problem a

    Description 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) 这句话的意思就等于是说第i个 ...

  8. Java POI单元格使用心得

    1: /** * Created by liuguangxin on 2018/5/16. * <p> * MergeRegion:表示excel中cell的信息,startRow与end ...

  9. Object Detection API 相关

    训练官方提供的数据集: http://blog.csdn.net/LiJiancheng0614/article/details/77756252 训练自己的数据集(墙外): https://medi ...

  10. python利用smtplib和MIMETYPE发送邮件

    # -*- coding:utf- -*- import smtplib from email.mime.text import MIMEText sender = '你的发送邮件' my_pass= ...