阶段三-04 celery基础模块安装和试运行

2024-02-03 20:50

本文主要是介绍阶段三-04 celery基础模块安装和试运行,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

版本兼容性

Django==4.0.5 #4.1.x应该也兼容 celery==5.2.6 django-celery-beat==2.3.0 django-celery-results==2.3.1 flower==1.0.0 #应该可以用1.1.0或1.2.0,自己尝试

其他配置

1、settings同级目录下创建celery.py

__init__中加入   __all__ = ('celery_app',)
import osfrom celery import Celery# Set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '项目包名(settings所在的包)')app = Celery('djangoProject1', broker='amqp://用户名:密码@IP')# Using a string here means the worker doesn't have to serialize
# the configuration object to child processes.
# - namespace='CELERY' means all celery-related configuration keys
#   should have a `CELERY_` prefix.
app.config_from_object('django.conf:settings', namespace='CELERY')# Load task modules from all registered Django apps.
app.autodiscover_tasks()@app.task(bind=True)
def debug_task(self):print(f'Request: {self.request!r}')

2、settings中

INSTALLED_APPS中加入 'django_celery_results',最下方加入:
# ################################## CELERY ######################################
# 最重要的配置,消息broker的连接方式,格式为: db://user:password@host:port/dbname
CELERY_BROKER_URL = 'amqp://xxxx/test_plt'# 设置时区,与django TIME_ZONE一致
CELERY_TIMEZONE = TIME_ZONE# 支持数据库 django-db 和缓存 django-cache
CELERY_RESULT_BACKEND = 'django-db'# 储存结果过期,默认1天,0为永不过期
# 如果beat开启,celery每天会自动清除过期记录
CELERY_RESULT_EXPIRES = 259200# 超时终止,执行下个任务
CELERY_TASK_TIME_LIMIT = 600

3、尝试启动

windows下安装插件eventlet

celery -A djangoProject1 worker -P eventlet -l info --pool=solo

 

命令行运行debug_task

import os, django
os.environ['DJANGO_SETTINGS_MODULE'] ='djangoProject1'
django.setup()from djangoProject1.celery import debug_taskdebug_task.delay()

返回terminal查看,有可能报错多线程执行错误(需要停掉重新 加上 --pool=solo);如果没有报错执行成功的效果:

此时再来到jango页面点击,页面可能会报错。这个是涉及到数据库写入时间的时区冲突问题 

 

4、单独创建tasks.py,用于验证beat和flower

在test_plt下创建tasks.py, 引入 @shared_task ;为了让celery识别到我们的任务。注意:完成后需要重启woker才能识别到新的task

成功执行后,Result Data会记录task的返回值

执行后需要监控消息队列,发现rabbit get message (ack mode中 Nack…… 表示提取消息后再重新入列,以免celery worker 消费不到)无法直接监控,此时需要借助flower

celery -A djangoProject1 flower --prot=5555 --broker_api=http://MQ账号:密码@ip:15672/api/

 新建一个终端执行,成功后http://localhost:5555/查看

最后是beat,首先需要在 settings  INSTALLED_APPS 里注册  'django_celery_beat' ;之后django_celery_beat  创建表 ;最后启动beat   celery -A djangoProject1 beat -l info  

在页面上创建定时任务试试:

任务没有执行,表单中填写的信息已经记录进数据库了。但是我们没有给CELERY_BEAT指明用哪一个数据库的数据。所以还需要在 settings中加入 :

CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'

之后重启beat,发现自建的任务识别到了

配合rabbitMQ的使用

了解部分使用规则,首先新建一个队列

在队列中手动推送一条消息,然后截取查看

现在可以做一个小实验,先停掉celery worker的进程(停用后创建的消息就不会被自动消费了)。控制台在调用一次task(相当于生产者创建了一个数据,等待进入队列被消费) 之后rabbit页面直接进入celery的列队手动获取消息。可以看到我们task的传参

 此时再启动worker单线程执行下,celery -A djangoProject1 worker -P eventlet -l info --pool=solo 

再来观察,发现刚刚 Ready的变成 Unackde(相当于等待消费者消费后应答的状态)了

这篇关于阶段三-04 celery基础模块安装和试运行的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/675371

相关文章

win10安装及配置Gradle全过程

《win10安装及配置Gradle全过程》本文详细介绍了Gradle的下载、安装、环境变量配置以及如何修改本地仓库位置,通过这些步骤,用户可以成功安装并配置Gradle,以便进行项目构建... 目录一、Gradle下载1.1、Gradle下载地址1.2、Gradle下载步骤二、Gradle安装步骤2.1、安

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

Spring的基础事务注解@Transactional作用解读

《Spring的基础事务注解@Transactional作用解读》文章介绍了Spring框架中的事务管理,核心注解@Transactional用于声明事务,支持传播机制、隔离级别等配置,结合@Tran... 目录一、事务管理基础1.1 Spring事务的核心注解1.2 注解属性详解1.3 实现原理二、事务事

python依赖管理工具UV的安装和使用教程

《python依赖管理工具UV的安装和使用教程》UV是一个用Rust编写的Python包安装和依赖管理工具,比传统工具(如pip)有着更快、更高效的体验,:本文主要介绍python依赖管理工具UV... 目录前言一、命令安装uv二、手动编译安装2.1在archlinux安装uv的依赖工具2.2从github

python pymodbus模块的具体使用

《pythonpymodbus模块的具体使用》pymodbus是一个Python实现的Modbus协议库,支持TCP和RTU通信模式,支持读写线圈、离散输入、保持寄存器等数据类型,具有一定的参考价值... 目录一、详解1、 基础概念2、核心功能3、安装与设置4、使用示例5、 高级特性6、注意事项二、代码示例

JDK8(Java Development kit)的安装与配置全过程

《JDK8(JavaDevelopmentkit)的安装与配置全过程》文章简要介绍了Java的核心特点(如跨平台、JVM机制)及JDK/JRE的区别,重点讲解了如何通过配置环境变量(PATH和JA... 目录Java特点JDKJREJDK的下载,安装配置环境变量总结Java特点说起 Java,大家肯定都

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke