阶段三-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

相关文章

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

Linux(Centos7)安装Mysql/Redis/MinIO方式

《Linux(Centos7)安装Mysql/Redis/MinIO方式》文章总结:介绍了如何安装MySQL和Redis,以及如何配置它们为开机自启,还详细讲解了如何安装MinIO,包括配置Syste... 目录安装mysql安装Redis安装MinIO总结安装Mysql安装Redis搜索Red

python安装完成后可以进行的后续步骤和注意事项小结

《python安装完成后可以进行的后续步骤和注意事项小结》本文详细介绍了安装Python3后的后续步骤,包括验证安装、配置环境、安装包、创建和运行脚本,以及使用虚拟环境,还强调了注意事项,如系统更新、... 目录验证安装配置环境(可选)安装python包创建和运行Python脚本虚拟环境(可选)注意事项安装

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件