首页 > 其他分享 >celery包结构

celery包结构

时间:2024-05-29 18:34:30浏览次数:16  
标签:task app py celery result import 结构

celery包结构.jpg

celery包结构的使用

包结构如下

项目名
    ├── celery_task  	# celery包
    │   ├── __init__.py # 包文件
    │   ├── celery.py   # celery连接和配置相关文件,且名字必须叫celery.py  app文件必须在这里面创建出来 
    │   └── user_tasks.py    # 所有任务函数
    	└── order_tasks.py    # 所有任务函数
    ├── add_task.py  	# 添加任务
    └── get_result.py   # 获取结果

1 新建一个包下面存放如下的文件

celery_demo2
    | celery_task
        │  celery.py           # 必须叫这个名称 celery.py !!!
        │  order_task.py
        │  user_task.py
        │  __init__.py  # 注意 必须是一个包
    | add_task.py
    | get_result.py  

2 celery.py

from celery import Celery

broker = "redis://127.0.0.1:6379/1"
backend = "redis://127.0.0.1:6379/2"
                                                    # 监控任务列表里面放模块,不需要加.py 会自动在app里面注册
app = Celery("app", broker=broker, backend=backend, include=["celery_task.order_task", "celery_task.user_task"])

3 order_task.py

import time
from .celery import app


@app.task
def send_sms(mobile):
    time.sleep(3)
    return (f"{mobile} 下单成功")

4 user_task.py

import time
from .celery import app

@app.task
def add(x, y):
    time.sleep(3)
    return x + y

5 add_task.py 有坑 -->取id

from celery_task.order_task import send_sms


# 同步调用
# send_sms('187xxxx2008')

# 异步调用
res = send_sms.delay("187xxxx2008")
print(res.id) # 这里必须取id!!!!!!

6 get_result.py

from celery_task.celery import app
from celery.result import AsyncResult

id = '38429ddf-c0f1-4f83-b8f1-5f0c71b8e129'

if __name__ == '__main__':
    result = AsyncResult(id=id, app=app)
    if result.successful():
        result = result.get()
        print(result)
    elif result.failed():
        print('任务失败')
    elif result.status == 'PENDING':
        print('任务等待中被执行')
    elif result.status == 'RETRY':
        print('任务异常后正在重试')
    elif result.status == 'STARTED':
        print('任务已经开始被执行')

7 依次执行拿结果 有坑 --> 导入到包就行

add_task.py
celery -A celery_task worker -l info -P eventlet  # 注意  这里导入到包这一层就可以了 celery_task 
get_result.py

标签:task,app,py,celery,result,import,结构
From: https://www.cnblogs.com/ccsvip/p/18220851

相关文章

  • celery定时任务
    注意:不论是定时任务,还是普非定时任务,都需要启动worker,别忘记。(〃>目<)老方法#1配置文件celery.py中不是settings.py中!!!#时区app.conf.timezone='Asia/Shanghai'#是否使用UTCapp.conf.enable_utc=False#任务的定时配置fromdatetimeimporttimedeltafromcel......
  • celery官方解决方案(基于django新)
    使用官方方案之前,先看看目录结构。luffy_api/__init__.pycelery.pysettings.pyurls.pywsgi.pymyapp/__init__.pytasks.py#也就是放在项目名称同名的内部文件夹下(和settings)同名#必须是这样的结构。第一步安装必要的模块......
  • celery通用解决方案(基于django老)
    通用方案移动项目celery_task到项目根目录在视图中写逻辑启动worker-->celery-Acelery_taskworker-ldebug-Peventlet运行django,正常使用接口#1把之前的celery_task移动过到项目根路径,然后开启worker#2在视图函数中提交任务#fromlibs.tx_smsimportg......
  • 初始celery
    使用celery前的一些注意事项res=add.delay(x,y)print(res.id)#这个id才是真正的任务id#安装pipinstallcelery#安装redis(消息队列和结果存储使用redis)pipinstallredis#windows安装,mac和Linux不需要安装下面的包pipinstalleventlet#官网解释#Celeryi......
  • python 基础习题4--分支结构
    1. 判断闰年,输入一个年份,判断该年份是否是闰年,闰年的判断规则如下:(1)能被4整除但不能被100整除的年份是闰年。(2)能被400整除的年份也是闰年。举例来说,2000年是闰年,因为它能被400整除,而1900年不是闰年,因为它能被4整除但却能被100整除。是闰年打印输出“yes”,否则......
  • 为什么算法和数据结构重要?
    算法的重要性 效率提升:优秀的算法可以显著提高程序的执行效率,减少运行时间。解决复杂问题:算法提供了解决复杂问题的系统方法,如排序、大规模数据处理、路径规划等。优化资源使用:通过优化算法,可以更好地利用计算资源,如内存和处理能力。 数据结构的重要性 数据组织:良......
  • 探索数据结构:单链表的实践和应用
    ......
  • kbgressdb之数据结构V0.2
    前言原本计划2024.05.01日开始编码,直到2024.05.21日才开始编码,因为在2024.05.19日才感觉体力恢复到了九成,然后就开始kbgressdbV0.2版本设计,经过一周的推演与构思,终于在2024.05.29日完成V0.2版本设计。为什么把大量精力放在kbgressdb数据结构上?或许你会有此一问,因为这个kbgressdb......
  • C++ - 结构体转cha*
    c语言结构体转cha*在C语言中,将结构体转换为char*通常意味着你想要获取结构体的内存表示,并将其视为字符数组。这种转换可以通过使用memcpy函数来实现。下面是一个简单的例子,展示了如何将结构体转换为char*: #include<stdio.h>#include<stdlib.h>#include<string.......
  • C++ - tcp网络传输如何发送结构体类型
    1、tcp网络传输如何发送结构体类型 在C++中,要通过TCP网络传输结构体类型,你需要将结构体序列化为字节流,然后在另一端反序列化。这里有一个简单的例子:#include<iostream>#include<cstring>#include<sys/socket.h>#include<netinet/in.h>#include<unistd.h>//假设......