django中的Celery调度+Redis安装

Celery调度+Redis安装

Celery是一个使用Python开发的分布式任务调度模块,因此对于大量使用Python构建的系统,使用起来方便。
Celery目前爸爸4.x,仅支持Django 1.8以上版本。 Celery 3.1只可以支持Django1.8一下版本。

  • Celery官网http://www.celeryproject.org/

  • Celery帮助文档http://www.celeryproject.org/docs-and-support/

  • 优点:

    1. 简单:调用接口简单易用
    2. 高可用:客户端、Worker之间连接自动重试,Broker自身支持HA
    3. 快速:单个Celery进程每分钟可用数以百万计的任务
    4. 灵活:Celery的每一个部分都能扩展,或直接使用,或用户自己定义。

常用应用

  • Celery可用支持实时异步任务处理,也支持任务的定时调度。
    1. 异步发邮件
      • cleery执行队列
    2. 间隔半小时同步天气信息等
      • celery定时操作

角色

  • 任务Task:对应一个Python函数
  • 队列Queue:待执行任务的队列
  • 工人Worker:一个新的进程,负者执行任务
  • 代理Broker:负者调度,在任务环境中使用RabbitMQ、Redis等
  1. Celery需要依靠RabbitMQ等作为消息代理,同时也支持Redis甚至是Mysql、Mongo等,当然,官方默认推荐的是RabbitMQ,如果使用Redis需要配置。
  2. 本次采用Redis来作为Broker,也是Redis存储任务结果

安装

$ pip install celery==4.2.0

安装对redis的支持,并自动升级相关依赖
$ pip install -U "celery[redis]"

测试

Celery库使用前,必须初始化,所得示例叫做"应用application或app"。应用是线程安全的。不同应用在同一进程中,可以使用不同拍照、不同组件、不同结果

from celery import Celery
app = Celery('mytask')
print(app)

@app.task
def add(x,y):
    return x+y

print(add.name) #mytask.add
print(add)

print(app.tasks)
print(app.conf)
print(*list(app.conf.items()),sep = '\n')
  • 默认使用amqp链接到本地amqp://guest:**@localhost:5672//
  • 本次使用Redis

Redis安装配置

  • 使用Epel源的rpm安装
redis安装,使用提供的rpm安装,redis依赖jemalloc

# yum install jemalloc-3.6.0-1.el7.x86_64.rpm redis-3.2.12-2.el7.x86_64.rpm

# rpm -pql redis-3.2.12-2.el7.x86_64.rpm
/etc/logrotate.d/redis
/etc/redis-sentinel.conf
/etc/redis.conf
/usr/bin/redis-cli
/usr/bin/redis-sentinel
/usr/bin/redis-server
/usr/lib/systemd/system/redis-sentinel.service
/usr/lib/systemd/system/redis.service

# 编辑redis配置文件
# vi /ect/redis.conf
port 6379 #启动时的默认端口
bind 192.168.61.109  #redis启动时的主机
protected-mode no #是否开启保护模式
  • 启动、停止redis服务
## 启动服务
# systemctl start redis 
## 停止服务
# systemctl stop redis
## 添加开机启动
# systemctl enable redis

broker配置使用

  • redis链接字符串格式redis://password@hostname:port/db_number
#指定服务器的redis端口6379,使用0号库
app.conf.broker_url = 'redis://192.168.61.109:6379/0'

Celery使用

  • 生成任务
from celery import Celery
import time
app = Celery('mytask')
# print(app)
# print(add.name) #mytask.add
# print(add)
# print(app.tasks)
# print(app.conf)
#配置redis派发任务,任务存放地址
app
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值