首页 > 其他分享 >celery封装与包结构

celery封装与包结构

时间:2023-06-22 18:11:55浏览次数:38  
标签:task 封装 app py celery print import 结构

celery封装与包结构

project
    ├── celery_task  	# celery包
    │   ├── __init__.py # 包文件
    │   ├── celery.py   # celery连接和配置相关文件,且名字必须交celery.py
    │   └── tasks.py    # 所有任务函数
    ├── add_task.py  	# 添加任务
    └── get_result.py   # 获取结果
    
#########################   快速封装   ############################
					 新建包 celerry_task
    						-在包下新建celery.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, include=['celery_task.order_task', 'celery_task.user_task'])
						#include是任务文件

                        '''
            				新建task,提交异步任务
                				'''
                				from .celery import app
                				import time
                                @app.task#装饰成任务
                                def add(a, b):
                                    print('-----', a + b)
                                    time.sleep(2)
                                    return a + b

                				'''
                    -启动worker
                    celery -A celerry_task worker -l info -p eventlet
                    -启动其他程序,提交任务,被提交到中间件中,等待worker执行
                    '''
                    from celery_task import send_sms
                    res=send_sms.delay("","")
                    res是任务进程号
                    '''
                    -worker执行完,结果保存到backend中
                    -查看结果
                    '''
                    from celery_task import app
                    from celery.result import AsyncResult
                    id = '7d39033c-4cc7-4af2-8d78-e62c277db183'
                    if __name__ == '__main__':
                        a = AsyncResult(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('任务已经开始被执行')
                    
                    '''

标签:task,封装,app,py,celery,print,import,结构
From: https://www.cnblogs.com/liyuanxiangls/p/17498079.html

相关文章

  • 基础数据结构
    基础数据结构\(\mathcal{Part}\)1.链表大家应该比较熟,直接说特点啦可以\(\mathcal{O}(1)\)查询后继\(\mathcal{O}(n)\)查询元素\(\mathcal{O}(1)\)插入和删除元素至于STL的话,感觉不怎么好用,而且手写更方便(又不是什么很难得东西应用1链式前向星,应该印在脑子里......
  • localStorage如何设置过期时间 (如何封装自定义localStorage)
    1、创建Storage类定义对应的getsetremoveclearapi通过set函数添加过期时间参数来实现过期时间的记录设置存储时存储当前值和过期时间get取值的时候先验证当前值是否存在以及时间是否大于过期时间如果存在且不大于过期时间既可返回对应的值否则返回空classStorage......
  • TienChin 项目改造完善&项目结构分析
    项目改造完善更改BannerBanner生成网站:https://bootschool.net/ascii更改启动类中的Banner!>如果生效,需要重新编译一下项目工程(出现了启动之后还没改变就需要执行一下这个步骤):出现的原因是可能你没有删除.idea文件与.iml文件让idea重新生成一下,可以先删除了,......
  • 【代码设计】链表结构解决多流程校验
    目的使用合理的代码设计,解决业务场景的中的实际问题。背景介绍在实际的业务场景中,用户的一个操作行为,是否允许真正被执行,往往会涉及到多流程的校验,一旦有条件不满足将会被中止。以下面流程图为例:用户点击了打赏按钮,会进行是否有网络检查,没有网络,会有网络连接弹框,等待用户连接结果......
  • MYSQL 修改表结构 gh-ost 到底强哪里 作者自己来talk
    PT工具在MYSQL中的使用其实已经好像有“半个世纪了”,其出名的原因主要是因为pt-osc,如果你不知道,那你真的用过MYSQL,其实还有另外两家FB-OST,GH-OST.实际上PT-OSC 虽然使用了这么多年,他也存在一些问题 PT-OSC1有些操作中,会引起高负载的写操作2在原表和新表切换的过程中更名,可......
  • REDIS 不单纯的数据库结构
    数据库是一个处理数据的地方,包含了数据计算,数据存储,和数据转换等等,其中处理数据中,数据库结构和数据库库结构的种类,可以作为评判一个数据库某项指标好坏的关键。什么是一个好的数据结构,简单的说,方便数据访问,和管理的数据结构就是一个好的数据结构。REDIS本身虽然是一个缓存式数据库......
  • celery笔记五之消息队列的介绍
    本文首发于公众号:Hunter后端原文链接:celery笔记五之消息队列的介绍前面我们介绍过task的处理方式,将task发送到队列queue,然后worker从queue中一个个的获取task进行处理。task的队列queue可以是多个,处理task的worker也可以是多个,worker可以处理任意queue......
  • 【数据结构与算法】用队列实现栈
    ......
  • 以下是一些可能适用于代码质量领域的热门博客文章标题,以逻辑清晰、结构紧凑、简单易懂
    目录引言随着软件开发的越来越复杂和广泛的应用,代码质量成为了一个越来越重要的话题。在软件开发中,代码质量指的是代码的可读性、可维护性、可扩展性、安全性等方面的质量。优秀的代码质量不仅可以提高软件的稳定性和可靠性,还可以减少代码重构和维护的时间和成本。因此,对于程......
  • Android Kotlin Retrofit MVP网络请求封装(四)
    依赖implementation'com.squareup.retrofit2:retrofit:2.9.0'implementation'com.google.code.gson:gson:2.8.8'implementation'com.squareup.okhttp3:okhttp:4.9.1'implementation'com.squareup.retrofit2:retrof......