第二十三课 Celery异步分布式

本文介绍了Celery的基本概念,包括其作为Python异步任务调度模块的功能,并提供了如何配置及使用Celery进行分布式任务处理的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是celery

Celery是一个python开发的异步分布式任务调度模块。
Celery本身并不提供消息服务,使用第三方服务,也就是borker来传递任务,目前支持rebbimq,redis, 数据库等。
`这里我们使用redis 连接url的格式为:
redis://:password@hostname:port/db_number

例如:BROKER_URL = 'redis://localhost:6379/0'


二、安装celery
pip install celery
pip install redis

在服务器上安装redis服务器,并启动redis
第一个简单的例子:
[root@localhost celery]# cat ling.py
#/usr/bin/env python
#-*- coding:utf-8 -*-
from celery import Celery
broker="redis://192.168.48.131:6379/5"
backend="redis://192.168.48.131:6379/6"
app = Celery("ling", broker=broker, backend=backend)
@app.task
def add(x, y):

        return x+y


三、启动worker
#celery -A ling worker -l info

注意:celery -A   启动一个app, 后面跟app的名字,app名字需要和上面的文件名字一致


生产者
form ling import add
re = add.delay(10, 20)
print(re.result) #获取结果
print(re.ready()) #是否处理
print(re.get(timeout=1)) #获取结果
print(re.status) #是否处理
print(re.id)
Print(re.task_id)

四、Celery模块调用

既然celery是一个分布式的任务调度模块,那么celery是如何和分布式挂钩呢,celery可以支持多台不通的计算机执行不同的任务或者相同的任务。
如果要说celery的分布式应用的话,我觉得就要提到celery的消息路由机制,就要提一下AMQP协议。具体的可以查看AMQP的文档。简单地说就是可以有多个消息队列(Message Queue),不同的消息可以指定发送给不同的Message Queue,而这是通过Exchange来实现的。发送消息到Message Queue中时,可以指定routiing_key,Exchange通过routing_key来把消息路由(routes)到不同的Message Queue中去




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值