python_Celery分布式任务队列

Celery是一个简单,灵活且可靠的分布式系统,可以处理大量消息,同时为操作提供维护该系统所需的工具。

这是一个任务队列,着重于实时处理,同时还支持任务调度。

任务队列是用在线程或计算机之间分配工作的机制

Celery通过消息进行通信,通常使用代理在客户端和工作人员之间进行调解。为了启动任务,客户端将消息添加到队列中,然后代理将消息传递给工作人员

celery_test工作目录结构

(Quantification) appledeMac-mini-3:celery_test apple$ tree
.
├── __init__.py
├── __pycache__
│   ├── __init__.cpython-37.pyc
│   ├── celery.cpython-37.pyc
│   ├── celeryconfig.cpython-37.pyc
│   └── tasks.cpython-37.pyc
├── celery.py       #主程序
├── celeryconfig.py  #配置文件
└── tasks.py    # 任务模块

celery.py

#
# Python3开始,import 默认只做absolute import
# from __future__ import absolute_import
from celery import Celery
from celery_test import celeryconfig

# 实例化celery对象,任务调度利器(分布式任务调度模块)
app=Celery('celery_test')

# 加载app配置文件
# 1. app.config_from_object('celery_test.celeryconfig')
# 2.
app.config_from_object(celeryconfig)


if __name__ == '__main__':
    app.start()

celeryconfig.py

# Celery本身不含消息服务,它使用第三方消息服务来传递任务
# 选redis作为消息服务(Broker),Celery默认使用的是RabbitMQ
# 也可以通过 -b 选项在命令行进行设置其他的中间人(Broker)
broker_url = 'redis://127.0.0.1:6379/1'

# 保存结果:如果想跟踪任务状态,Celery需要存储任务状态信息.
# Celery 内置了一些后端结果:SQLAlchemy/Django ORM、Memcached、Redis、 RPC (RabbitMQ/AMQP)以及自定义的后端结果存储中间件
backend=''

# 指定序列化方式
task_serializer = 'json'

# 指定区时间
tiemzone = 'Asia/Shanghai'

# 导入任务模块列表
include=['celery_test.tasks',]

tasks.py

# 装饰器从所有可调用对象中创建任务类
from celery_test.celery import app


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

@app.task
def mul(x,y):
    return x*y

启动Celery Worker

celery -A  celery_test   worker  -l  info

在这里插入图片描述
调用celery中的任务

>>> from celery_test.tasks import add,mul
# delay : Returns: celery.result.AsyncResult: Future promise(异步执行)
>>> res=add.delay(2,3)
>>> res
<AsyncResult: fe2a3e01-b285-4f68-bd76-cdb5d4f3d15f>

Celery端会显示

[2020-04-10 15:57:26,200: INFO/ForkPoolWorker-2] 
Task celery_test.tasks.add[fe2a3e01-b285-4f68-bd76-cdb5d4f3d15f] succeeded in 0.0014597050000002554s: 8

启动Celery Worker 的debug模式

celery -A celery_test worker -l debug

调用celery中的任务–>Celery端会显示的更详细:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值