celery介绍和安装与快速使用

Posted 好耶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了celery介绍和安装与快速使用相关的知识,希望对你有一定的参考价值。

celery介绍和安装与快速使用

celery介绍和安装

celery 介绍
 框架:服务python框架,跟django无关
    -能做什么
    	- 异步任务
        -定时任务
        -延迟任务
celery的原理
	1 可以不依赖于任何服务器,通过自身命令启动服务
    2 celery服务为其他项目服务提供异步解决任务需求
    3 #会有两个服务同时运行,一个是项目服务,一个是celery服务,项目服务将需要异步处理的任务交给celery服务,celery就会在需要时异步完成项目的需求
celery框架(Broker,bacjed,都使用redis)
	1 任务中间件Broker(中间件),其他服务提交异步任务,放在里面排队
    2 任务执行单元worker,是执行异步任务的就进程
    3 结果存储 backed,结果存储函数的返回结果,保存到backed中
    
celery使用场景
 	异步任务
    延迟任务
    定时任务
#celery 不支持win,通过eventlet支持在win上运行

celery快速使用

安装
	pip install celery
    win:pip install eventlet
快速使用
	-新建一个py文件
        from celery import Celery
        # 提交的异步任务,放在里面
        broker = \'redis://127.0.0.1:6379/1\'
        # 执行完的结果,放在这里
        backend = \'redis://127.0.0.1:6379/2\'
        app = Celery(\'test\', broker=broker, backend=backend)
        @app.task
        def add(a, b):
            import time
            time.sleep(3)
            print(\'------\',a + b)
            return a + b
	-其他程序提交任务
        res = add.delay(5,6)   #原来add的参数,直接放在delay中传入即可
        print(res)  # f150d8a5-c955-478d-9343-f3b60d0d5bdb
    -启动worker
    	# 启动worker命令,win需要安装eventlet
        win:
           -4.x之前版本
            celery worker -A main -l info -P eventlet
           -4.x之后
            celery  -A main  worker -l info -P eventlet
        mac:
           celery  -A main  worker -l info
    -worker会执行中间件中的任务,把结果保存起来
    -查看执行结果
    	from 文件名 import app
        from celery.result import AsyncResult
        id=""
        if __name__=="__main__":
            a=AsycResult(id=id,app=app)
            if a.successful():  # 执行完了
            result = a.get()  #
            print(result)
        elif a.failed():
            print(\'任务失败\')
        elif a.status == \'PENDING\':
            print(\'任务等待中被执行\')
        elif a.status == \'RETRY\':
            print(\'任务异常后正在重试\')
        elif a.status == \'STARTED\':
            print(\'任务已经开始被执行\')
	

以上是关于celery介绍和安装与快速使用的主要内容,如果未能解决你的问题,请参考以下文章

Celery 分布式任务队列快速入门

Celery 分布式任务队列快速入门

Celery 分布式任务队列快速入门

Celery 分布式任务队列快速入门

Celery分布式任务队列快速入门

flask 工厂模式与celery结合