一、celery简介
1、Celery 分布式任务队列 2、Celery 是一款非常简单、灵活、可靠的分布式系统,可用于处理大量消息,并且提供了一整套操作此系统的一系列工具。 3、Celery 是一款消息队列工具,可用于处理实时数据以及任务调度。 4、Celery 通过消息机制进行通信,通常使用中间人(Broker)作为客户端和职程(Worker)调节。启动一个任务, 客户端向消息队列发送一条消息,然后中间人(Broker)将消息传递给一个职程(Worker),最后由职程(Worker)进行执行中间人(Broker)分配的任务。 5、Celery 可以有多个职程(Worker)和中间人(Broker),用来提高Celery的高可用性以及横向扩展能力。 二、版本需求(这个是要注意一下) 1、Python版本:Python 3.6.8 2、celery版本:5.1.2 一开始我是用的是Python3.7,然后发现各种坑,经多方查证发现是Python版本高了 三、简单使用 **我们最终肯定是想将celery使用与项目中,所以我们直接略过最简单的使用 **目前celery使用的是redis,所以redis的安装可以参考其他,例如菜鸟教程。建议使用docker容器启动,简单方便 1、关于celery的文件布局:
celery_demo:可以理解为项目文件夹, --proj:celery的文件夹,相关的配置文件,定义celery,包括任务,主要就是这些了 --celeryconfig.py:celery的配置文件 --celery:celery启动代码 --tasks.py:存放任务,没有特殊要求,可以就采用该文件名 --zhixing.py:调用celery的任务 2、关于celeryconfig.py配置文件简单讲解:
# coding=utf-8 broker_url = 'redis://127.0.0.1:6379/0' # redis 存储发送端来的任务队列 result_backed = 'redis://127.0.0.1:6379/1' # 用redis存储执行端执行得到结果
3、celery文件代码简单讲解
# coding=utf-8 from . import celeryconfig # 注意导包方式,celery对于这个比较敏感 from celery import Celery app = Celery( "proj", include=['proj.tasks'] # 此处是tasks任务 ) app.config_from_object(celeryconfig) # 使用配置文件 if __name__ == "__main__": app.start()
4、tasks.py任务文件:
# coding=utf-8 import time from .celery import app @app.task def add(x=3, y=4): return x + y @app.task def mul(x, y): return x * y
5、zhixing.py文件:
# coding=utf-8 import time from proj.tasks import add def start(): res = add.delay(4,4) print(res) if __name__ == "__main__": start()
6、演示:
①、启动celery:celery -A proj worker -l info
②、执行调用代码
目前最基本简单的使用演示结束。更多可以参考相关文档。