celery的介绍和在爬虫的中使用

一、Celery介绍和基本使用

Celery官方文档:http://docs.celeryproject.org/en/latest/index.html
Celery是什么?
Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个实例场景中可用的例子:

  • 异步任务:将耗时的操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音频处理等等
  • 做一个定时任务,比如每天定时执行爬虫爬取指定内容
  • 还可以使用celery实现简单的分布式爬虫系统等等

Celery 在执行任务时需要通过一个消息中间件(Broker)来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis,后面会讲

1.1 Celery有以下优点:

  1. 简单:Celery 易于使用和维护,并且它 不需要配置文件 ,并且配置和使用还是比较简单的(后面会讲到配置文件可以有)
  2. 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务
  3. 快速:单个 Celery 进程每分钟可处理数以百万计的任务,而保持往返延迟在亚毫秒级
  4. 灵活: Celery 几乎所有部分都可以扩展或单独使用,各个部分可以自定义。

1.2 Celery执行流程图如下
在这里插入图片描述

二、Celery安装使用

  1. 安装celery模块

pip install celery

  1. Celery的默认broker(消息中间件)是RabbitMQ, 仅需配置一行就可以

BROKER_URL = ‘amqp://guest:guest@localhost:5672//’
rabbitMQ 没装的话请装一下,安装看这里 http://docs.celeryproject.org/en/latest/getting-started/brokers/rabbitmq.html#id3

3.使用Redis做broker(消息中间件)也可以
本地安装redis数据库(redis安装流程不再重复)

pip install redis
配置(Configuration is easy, just configure the location of your Redis database:)
app.conf.broker_url = ‘redis://localhost:6379/0’

三、Celery异步任务使用代码示例

对比说明

(1)不使用Celery的情况下我们执行一个耗时的任务,创建一个app.py 文件

import time
def add(x,y):
     time.sleep(5)
     return x+y
if __name__ == '__main__':
    print('task start....')
    result = add.delay(2,3)
    print('task end....')
    print(result)

运行代码发现出现5秒后打印了结果

task start....
task end....
5

(2)使用Celery执行(异步任务调度的情况),

  • step1:新建一个tasks.py文件
import time
from celery import Celery

#消息中间件(使用的redis)
broker = 'redis://localhost:6379/1'
#结果存储(使用的redis)
backend = 'redis://localhost:6379/2'
#实例化Celery对象
app = Celery(
    'celeryDemo',
    broker=broker,
    backend=backend
)

添加@app.task()装饰器,说明执行的任务是一个异步任务
@app.t
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值