Celery异步分布式
什么是celery?
他是一个python开发的异步分布式任务调度模块
celery本身不提供消息服务,使用第三方服务,也就是broker来传递任务,目前支持rabbitmq,redis,数据库等等。
我们使用redis
连接URL的格式为:
redis://:password@hostname:port/db_number
例如:
BROKER_URL='redis://localhost:6379/0'
过程如图示

在python里面如果用到异步分布式,首先想到celery
安装celery
1pip install celery 2pip install redis #之前讲过
在服务器上安装redis服务器,并启动redis
第一个简单的例子:
1[root@localhost celery]# cat lili.py 2#/usr/bin/env python 3#-*- coding:utf-8 -*- 4from celery import Celery 5broker="redis://192.168.48.131:6379/5" 6backend="redis://192.168.48.131:6379/6" 7app = Celery("lili", broker=broker, backend=backend) 8 9@app.task 10def add(x, y): 11 return x+y
启动:
# celery -A lili worker -l info
调用:
1# cat demo2.py 2#!/usr/bin/python 3#-*- coding:utf-8 -*- 4from lili import add 5import time 6a = add.delay(10, 20) 7print (a) ##返回异步分布式的对象 8print (type(a)) 9time.sleep(1) 10print (a.result) ##返回调用的值 11print (a.status) ##返回状态 12print (a.get(timeout=3)) ##获得值 13print (a.ready()) #是否处理,返回 True 为处理完成