ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

celery异步分布式框架使用一

2022-02-11 11:34:40  阅读:225  来源: 互联网

标签:__ 异步 Celery app redis celery import 分布式


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

       

 

  ②、执行调用代码

  

       

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

 

 

 

       

标签:__,异步,Celery,app,redis,celery,import,分布式
来源: https://www.cnblogs.com/leslie003/p/15882461.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有