栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【celery介绍】

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【celery介绍】

什么是celery
  1. celery是python开发的简单的,灵活可靠的,处理大量消息的分布式任务调度模块
  2. 专注于实时处理的异步任务队列
  3. 同时也支持任务调度
    Celery本身不含消息服务,它使用第三方消息服务来传递任务,目前,Celery支持的消息服务有RabbitMQ、Redis、Amazon SQS;Celery 是用 Python 编写的,但协议可以用任何语言实现。除了 Python 语言实现之外,还有Node.js的 node-celery 和php的 celery-php 。
架构图

Celery的架构由三部分组成,消息中间件(message broker)、任务执行单元(worker)和 任务执行结果存储(task result store)组成。

启动celery服务(配置好broker和backend),手动或自动添加任务到broker中,broker将任务分发给worker,worker后台异步执行任务,执行完成后将结果存放到backend中。

安装
  1. Linux安装
    pip安装
pip install celery

# 验证安装 查看版本
celery --version

---console---
5.2.3 (dawn-chorus)

使用redis作为backend和broker,需要本机安装redis,并启动redis-server,还需要安装Python第三方模块redis

pip install redis
  1. windows安装
    由于官方不支持windows安装和使用,需要借助Python第三方模块eventlet,此模块主要作用通过协程实现并发。
pip install celery
pip install eventlet

# 验证安装 查看版本
celery --version

基本使用
  1. 目录结构
    celery对目录要求严格,如果不在目录下加入__init__.py,worker执行任务可能会出现NotRegistered的情况
test
	__init__
	tasks.py
	run.py

tasks.py

from celery import Celery

# 通过使用本机redis且没有密码,使用远程redis有密码格式为
# 'redis://:密码@ip:6379/1'
broker = 'redis://127.0.0.1:6379/1'  # 任务储存
backend = 'redis://127.0.0.1:6379/2'  # 结果存储,执行完之后结果放在这

# 创建出app对象
app = Celery(__name__, broker=broker, backend=backend)

# 任务通过装饰器@app.task进行装饰
@app.task
def add(x, y):
    return x + y

run.py

from tasks import add

# 添加任务

# 返回一个 AsyncResult 实例,可以用于进行跟踪任务状况
result = add.delay(3,4)
print(result
  1. 启动worker
# 需要cd到tasks文件对应的路径
# 启动一个worker,日志打印级别为info

# windows平台启动
# celery -A tasks worker -l info -P eventlet
# linux启动
# 格式为:celery -A app对象所在的文件 worker -l 日志级别
celery -A tasks worker -l info

  1. 停止worker
    直接通过Ctrl+c停止即可
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1037984.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号