celery异步分布式框架使用一


一、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

       

  ②、执行调用代码

       

目前最基本简单的使用演示结束。更多可以参考相关文档。