首页 > 其他分享 >celery简单配置示例

celery简单配置示例

时间:2024-10-19 17:09:43浏览次数:1  
标签:task1 task2 配置 示例 app py celery 任务

目录

celery的配置文件示例

celer简单示例

tree  -I 'containerd|vminit|__pycache__'
.
# app.py属于生产者
├── app.py
# celery_app用于配置消费者及队列信息
└── celery_app
# confi.py配置信息
    ├── config.py
# __init__.py celery实例初始化文件
    ├── __init__.py
# task1,task2用于注册函数
    ├── task1.py
    └── task2.py

生产者

app.py

from celery_app import task1,task2

#调用delay()方法,任务被异步提交给消息队列,celery worker后台取出任务并执行
#返回AsyncResult对象,可以根据这个对象跟踪任务状态,结果
#任务的异步执行流程,1.调用delay()提交任务到消息队列,2.返回AsyncResult,查询结果
t2=task2.task2.delay(3,4)
print(t2)

t1 = task1.mutilpy.delay(2,10)
print(t1)

消费者配置信息

celery_app/config.py

#BROKER_URL 是消息代理(broker)的地址
BROKER_URL = "redis://127.0.0.1:6379/2"
#CELERY_RESULT_BACKEND是任务的结果后端
CELERY_RESULT_BACKEND = "redis://127.0.0.1:6379/3"
#CELERY_TIMEZONE 设置时区,定时任务,会用到
CELERY_TIMEZONE = "Asia/Shanghai"
#UTC

#Celery 可以在启动时自动加载和注册任务模块
CELERY_IMPORTS = (
    'celery_app.task1',
    'celery_app.task2',
)

celery_app/init.py

from celery import Celery

#创建celery应用实例,名称为demo,用于区分不同的celery实例
#这个实例是celery的核心对象,负责任务调度,任务路由,配置加载
app = Celery('demo')

#通过 Celery 实例加载配置
app.config_from_object('celery_app.config')

celery_app/task1.py

#导入Celery的app实例
from celery_app import app
import time

#app.task将普通函数转换为Celery任务,这个任务可以通过Celery的异步机制调度执行
@app.task
def mutilpy(x,y):
    time.sleep(5)
    return x * y 

celery_app/task2.py

from celery_app import app
import time

@app.task
def task2(x,y):
    time.sleep(20)
    return x / y

celery worker启动

celery -A celery_app worker -l INFO

查看celery启动日志

[config]
# app: demo表示运行的celery实例名称为demo
.> app:         demo:0x7f0014e6f3d0
# transport 表示消息代理(broker),它负责从生产者到消费者的传递
.> transport:   redis://127.0.0.1:6379/2
# results 表示结果后端,用于存储任务执行的结果
.> results:     redis://127.0.0.1:6379/3
# concurrency 表示celery worker可以同时处理两个任务
.> concurrency: 2 (prefork)
# 表示可以通过-E,--events启用事件监控
.> task events: OFF (enable -E to monitor tasks in this worker)

#表示celery worker 当前监听的队列
[queues]
# celery表示队列名字,默认Celery使用名为celery的队列接收和处理任务
#exchange是消息交换机,类型是direct,direct交换机表示消息将直接路由到具有匹配路由键的队列中
#key=celery是路由键,表示只有带有路由键的celery会被路由到这个队列,默认所有任务都会通过这个路由键发送到celery队列
.> celery           exchange=celery(direct) key=celery

#表示celery worker启动时,已经加载和注册的所有任务
[tasks]
#表示2个已经加载的任务
. celery_app.task1.mutilpy
. celery_app.task2.task2

调动生产者

python app.py 
#返回task_id
#49c5e568-7fb2-49ab-8be7-c5ee6124011f
#71b170fc-09a9-476e-be91-567dd78b163c

返回结果

#日志格式
#[时间: INFO/MainProcess] Task celery_app.tasks1.mutilpy[task_id] received
#任务接收
[2024-10-19 09:06:35,842: INFO/MainProcess] Task celery_app.task1.mutilpy[414dc010-f7f7-473d-83dc-282d4dfc4cca] received
#任务成功
#每个任务由不同的celery worker进程(ForkPoolWorker)执行.
#[时间: INFO/ForkPoolWorker-2] Task celery_app.task1.mutilpy[task_id] 状态 in 花费时间: 结果
[2024-10-19 09:06:40,844: INFO/ForkPoolWorker-2] Task celery_app.task1.mutilpy[414dc010-f7f7-473d-83dc-282d4dfc4cca] succeeded in 5.0014993995428085s: 20

标签:task1,task2,配置,示例,app,py,celery,任务
From: https://www.cnblogs.com/anyux/p/18476189

相关文章

  • java堆排序的示例代码
    publicclassHeapSort{publicstaticvoidmain(String[]args){int[]arr={12,11,13,5,6,7};System.out.println("Originalarray:");for(intvalue:arr){System.out.print(value+"");......
  • HarmonyOS Stage 模型:进程、线程与配置文件之浅析
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。HarmonyOS的Stage模型为开发者提供......
  • 从克隆项目到修改并上传到自己 GitHub 仓库的流程(包括私钥配置)
    从克隆项目到修改并上传到自己GitHub仓库的流程(包括私钥配置)生成SSH密钥如果还没有生成SSH密钥,可以通过以下命令生成:ssh-keygen-trsa-C"[email protected]"系统会提示你保存密钥的位置,通常保存在~/.ssh/id_rsa,如果不需要加密密码,直接按回车。添加SSH......
  • [Nginx] 配置 SSL
    443conf在sites-available中新建一个文件,通过记事本进行配置:server{#网站的端口号listen443ssl;server_namezhangting.net;ssl_certificate/etc/nginx/cert/.pem;ssl_certificate_key/etc/nginx/cert/.key;ssl_session_cacheshared:......
  • phpstorm+phpstudy快速配置xdebug
    1.下载安装小皮面板2.下载安装phpstorm3.开启phpxdebug默认php环境是7.3.4,一般不需要洞这个,本文也是使用这个版本的php进行快速配置,如果PHP5.X版本的配置此方法可能不同4.配置php文件访问\phpstudy_pro\Extensions\php\php7.3.4nts\php.ini最下面会看到如下配置......
  • Docker 配置代理服务
    如果Docker主机安装在内网,需要通过代理下载镜像,那可以为Docker服务(守护进程)配置代理服务器。本文是学习官方代理配置文档的笔记。Docker服务可以通过daemon.json文件或dockerd命令的--http-proxy或者--https-proxy的参数来配置。推荐使用配置文件来配置。配置......
  • docker配置变量
    docker配置变量案例:dockerrun-itd-p8090:8080-p50000:50000--namejenkins_pri_v1--privileged=true-e"PATH=/usr/local/apache-maven-3.8.4/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"-v/data/jenkins:/v......
  • 晨控CK-FR102ANS与汇川AC系列PLC配置EtherNet/IP通讯连接手册
    晨控CK-FR102ANS与汇川AC系列PLC配置EtherNet/IP通讯连接手册产品说明:CK-FR102ANS是一款基于射频识别技术的高频双通道读写器,读写器工作频率为13.56MHZ,支持对I-CODE2、I-CODESLI等符合ISO15693国际标准协议格式标签的读取。高频双通道读写器支持标准工业通讯协议EtherNet......
  • celery简单使用
    目录celery是什么使用场景安装celery命令定义消费者(worker)启动消费者查看消费者启动日志定义生产者(producer)celery是什么celery是一个简单,灵活且可靠的,处理大量消息的分布式系统专注于实时处理的异步任务队列同时也支持任务调度使用场景异步任务:将耗时操作任务提......
  • 【MySQL】设置二进制日志文件自动过期,从根源上解决占满磁盘的问题:通过修改 binlog_exp
    引言MySQL的二进制日志(binlog)文件记录了数据库中所有更改的详细信息,包括但不限于对数据的插入、删除、更新,对表和数据库的创建、更改、删除等操作。每一次这样的操作都会在二进制日志中生成一个新的日志事件,并被写入到一个新的二进制日志文件中。因此,如果数据库的活动量较......