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

相关文章

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

如何在pycharm安装torch包

《如何在pycharm安装torch包》:本文主要介绍如何在pycharm安装torch包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录在pycharm安装torch包适http://www.chinasem.cn配于我电脑的指令为适用的torch包为总结在p

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.