Django Celery 的配置及使用---最详细教程

news2025/1/21 15:35:40

Django Celery 的配置及使用

Redis提供队列消息功能

一、安装redis

系统版本:Ubuntu 20.04

1、获取最新软件包

sudo apt update 
sudo apt install redis-server

2、安装完成后,Redis服务器会自动启动。查看redis是否启动成功

sudo systemctl status redis-server 
或者 service redis-server status

二、开启远程服务

1、找到redis配置文件

vim /etc/redis/redis.conf
# 允许任何主机访问
注释掉这行 # bind 0.0.0.0 ::1

允许任何主机访问
protected-mode yes 改为 protected-mode no

2、重启 Redis 服务,使应用生效

sudo systemctl restart redis-server

三、开启默认端口

1、查看已开启的端口

sudo ufw status

2、开启6379端口

sudo ufw allow 6379

或者直接关闭防火墙

ufw  disable   //关闭防火墙
ufw  enable   //开启

3、验证设置是否完成

# 远程机器ping redis服务器
redis-cli -h 10.0.5.17 ping

# 输出PONG就代表欧克
PONG

四、常用命令

启动Redis服务:
sudo systemctl start redis-server 或者 service redis-server start
关闭Redis服务:
sudo systemctl stop redis-server 或者service redis-server stop
重启Redis服务:
sudo systemctl restart redis-server或者service redis-server restart

django-celery的配置

1、安装celery

pip install celery 或者 pip install celery==4.4.2 

2、添加配置(settings.py)

# celery 相关配置
# 配置celery时区,默认时UTC。
CELERY_TIMEZONE = TIME_ZONE

# 任务队列的链接地址 celery配置redis作为队列。redis有16个数据库,编号0~15。
CELERY_BROKER_URL = 'redis://10.0.5.17:6379/2'

# 设置存储结果的后台  结果队列的链接地址
CELERY_RESULT_BACKEND = 'redis://10.0.5.17:6379/3'

# 可接受的内容格式
CELERY_ACCEPT_CONTENT = ["json"]
# 任务序列化数据格式
CELERY_TASK_SERIALIZER = "json"
# 结果序列化数据格式
CELERY_RESULT_SERIALIZER = "json"

3、在项目同名目录下创建celery.py(必须按照要求来)

在这里插入图片描述

from __future__ import absolute_import, unicode_literals

import logging
import os
from celery import Celery

# 指定Django默认配置文件模块
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'RpkiProject.settings')

# 为项目demos创建一个Celery实例。
app = Celery('RpkiProject')

# 这里指定从django的settings.py里读取celery配置,且setting中的配置文件必须以'CELERY_'开头
app.config_from_object('django.conf:settings', namespace='CELERY')

# 自动从所有已注册的django app中加载任务
app.autodiscover_tasks()

# 配置 Celery 日志
# logger = logging.getLogger('celery')
# logger.setLevel(logging.DEBUG)  # 设置日志级别为 DEBUG
#
# # 创建一个文件处理程序,并将其添加到日志
# file_handler = logging.FileHandler('celery.log')
# file_handler.setLevel(logging.DEBUG)
# formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
# file_handler.setFormatter(formatter)
# logger.addHandler(file_handler)

4、将程序导入项目同名目录下的init.py中

在这里插入图片描述

from __future__ import absolute_import, unicode_literals

from .celery import app as celery_app

__all__ = ('celery_app',)

5、在已经注册app目录中,创建名为tasks.py的文件(如果取别的名字,celery就扫描不到了)

在这里插入图片描述

import logging
import sys

from celery import shared_task
from django.http import JsonResponse

@shared_task
def your_async_task(arg1):
    try:
        # 异步任务逻辑
        result = arg1
        return f"The result is: {result}"
    except Exception as e:
        # 处理异常
        raise e

调用异步任务

def some_view(request):
    # 定义参数
    arg1 = [1,2,3]
    arg2 = 10

    # 调用异步任务并传递参数
    result = your_async_task.delay(arg1)
    res = result.ready()
    # res1 = result.traceback()
    return JsonResponse(data=111, safe=False)

6、启动celery

pip install gevent
celery -A RpkiProject worker -l info -P gevent

#后台启动:nohup celery -A RpkiProject worker -l info -P gevent >/dev/null 2>&1 & exit
  nohub celery -A projetname worker -P gevent -c 1000 > celery.log 2>&1 &

  #1. nohub 忽略所有挂断信号(sighup)
  #2. projectname 项目配置目录 
  #3. -P 使用python协程进行任务的开启,开启1000个协程
  #4. celery.log 在当前目录下生成日志文件,也可以使用绝对路径。
  #5. 标准输入输入是文件描述符0,它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。
  #6. 标准输出输出是文件描述符1,它是命令的输出,缺省是屏幕,也可以是文件。
  #7. 标准错误输入是文件描述符2,这是命令错误的输出,缺省是屏幕,也可以是文件。
  #8. &符号:代表将命令在后台启动。
  #9. 2>&1 将错误输出重定向给标准输出,中间加&f符号。    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1681833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM运行时内存:虚拟机栈

文章目录 1. 概述2. 栈针3. 栈针内部结构3.1 局部变量表3.2 操作数栈3.3 动态链接3.4 方法返回地址3.5 一些附加信息 运行时内存整体结构如下图所示: 1. 概述 如何理解栈管运行,堆管存储? 角度一:GC;OOM角度二:栈、堆执行效率角…

信息管理系统升级改造项目:需求分析工具与实践

关键词:出入境信息管理系统、升级改造项目、需求分析实践、逆向工程、PowerDesigner、Axure Pro、信息系统优化策略 文章重点:本文以出入境信息管理系统的升级改造项目为背景,详细阐述了信息系统需求分析的实践过程,特别是如何通过…

Python实现缓存机制库之cachetools使用详解

概要 在数据密集型应用中,缓存是优化性能和响应速度的关键技术之一。Python的cachetools库提供了一套灵活且强大的工具,用于在Python项目中实现缓存机制。本文将全面介绍cachetools的安装、特性、基本与高级功能,并结合实际应用场景,展示其在项目中的应用。 安装 安装cac…

文字游侠AI丨简直是写作神器,头条爆文一键生成稳定赚米!附渠道和详细教程(只需四步)!

在数字时代的浪潮中,人们不断寻求网络空间中的商机,期望在互联网的浩瀚海洋里捕捉到稳定的财富。随着人工智能技术的突飞猛进,越来越多的AI工具被融入到各行各业,开辟了新天地,带来了创新的盈利模式。 其中&#xff0c…

PCB供电夹子DIY

在刷小红书的时候,看到了清华卓晴教授【https://zhuoqing.blog.csdn.net/】DIY的供电夹子,感觉对于自己DIY PCB的时候供电会比较方便,物料也比较简单,打算复刻一下。 使用物料 1、小夹子,文具店都有卖,选…

【Transformer-BEV编码(9)】Sparse4D v2 v3源代码分析。稀疏感知方向新的baseline,相机参数泛化能力差的问题。

前言: 基于BEV的稠密融合算法或许并不是最优的多摄融合感知框架。同时特征级的多摄融合也并不等价于BEV。这两年,PETR系列(PETR, PETR-v2, StreamPETR) 也取得了卓越的性能,并且其输出空间是稀疏的。在PETR系列方法中,对于每个in…

这10款安卓APP,简直好用到爆!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频http://AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频 1.追书——追书神器 追书神器是小说追新大神,全网实…

Online RL + IL :Policy Improvement via Imitation of Multiple Oracles

NIPS 2020 paper code 如何利用多个次优专家策略来引导智能体在线学习,后续有多个文章研究该设定下的RL。 Intro 论文探讨了在强化学习(RL)中,如何通过模仿多个次优策略(称为oracle)来提升策略性能的问题…

Qt 跨平台客户端开发框架

Qt 是一个流行的跨平台应用程序开发框架,用于开发图形用户界面(GUI)应用程序。尽管 Qt 提供了丰富的工具和功能,但在开发 Qt 客户端应用程序时,仍然可能面临一些技术难点。北京木奇移动技术有限公司,专业的…

没人讲清楚!我来讲!---- Ubuntu 20.04中下载配置Snort3,参数讲解及实现协议警报

文章目录 Snort一、Snort介绍1.1 概述1.2 主要功能1.3 关键特性 二、安装Snort三、配置Snort规则集四、配置Snort4.1 配置网卡4.2 启动参数4.3 自定义规则参数4.4 警报测试 最近刚好有网络安全的学习需求,看了好多文章,感觉都没有讲的很清楚。于是总结了…

JavaScript-基本数据类型和变量

基本数据类型 JavaScript支持数字、字符串和布尔值3种基本数据类型 字符串型 字符串型是JavaScript用来表示文本的数据类型,字符串通常由单引号或双引号括起来,如果字符串存在特殊字符,可以用转义字符代替 数字型 数字型也是JavaScript中的基…

【自然语言处理】二元文法模型

实验名称 二元文法模型 实验目的1.掌握N-gram文法的公式; 2.理解语言模型的实现过程; 3.掌握简单的平滑方法; 4.用代码编程实现2元语言模型,即一阶马尔可夫链。 实验内容:使用免费的中文分词语料库,如人民…

软考:数据流图案例

阅读下列说明和图,回答问题1至问题4。 一、说明 某医院欲开发病人监控系统。该系统通过各种设备监控病人的生命体征,并在生命体征异常时向医生和护理人员报警。该系统的主要功能如下: (1)本地监控:定期获…

Ubuntu20.4部署Cuda12.4

准备Ubuntu20.4 VM 安装Cuda12.4 1.进入如下界面安装安装Cuda12.4版本: CUDA Toolkit 12.4 Update 1 Downloads | NVIDIA Developerhttps://developer.nvidia.com/cuda-downloads?target_osLinux&target_archx86_64&DistributionUbuntu&target_vers…

Swift知识点(三)

11. init、deinit、可选链、协议、元类型 构造和析构 构造方法 构造方法是一种特殊的方法 一个对象创建完毕后,都需要调用构造方法进行初始化(比如属性的初始化) 验证:init方法是在对象创建完毕的时候调用 回到存储属性 在对…

【资源汇总】GIS/RS相关软件包+数据分享(直接获取附链接)

01软件类 ArcGIS 10.2 链接:https://pan.baidu.com/s/1euHa3eTiaTjiOu-zxsi9eA?pwdnjov ArcGIS Pro 2.8.6 链接:https://pan.baidu.com/s/1Y3AQshCGL7tA1zdUc7s9PQ?pwdlkic ENVI 5.3 链接:https://pan.baidu.com/s/14k4IVlYIheNOr2to…

visual studio 2017重命名解决方案或项目名称

1.解决方案->右键->重命名->新的名字 2.项目->右键->重命名->新的名字 3.修改程序集和命名空间名称 项目->右键->属性->修改程序集名称和命名空间名称 4.搜索换名 Ctrl-F->输入旧名称->搜索->将所有旧名称改为新名称(注意是整…

【吊打面试官系列】Java高并发篇 - 创建线程的有哪些方式?

大家好,我是锋哥。今天分享关于 【创建线程的有哪些方式?】面试题,希望对大家有帮助; 创建线程的有哪些方式? 1、继承 Thread 类创建线程类 2、通过 Runnable 接口创建线程类 3、通过 Callable 和 Future 创建线程 …

Nginx性能优化系列 | Nginx的location规则配置详解

Nginx性能优化系列 | Nginx的location规则配置详解 1. Nginx设置过滤条件 1. Nginx设置过滤条件 如果请求一个不存在网站接口路径,为避免被听云检测到过多错误次数触发告警,可以在Nginx层面设置对错误的请求路径直接返回200正确码 # vim /usr/local/ngi…

FestDfs快速安装和数据迁移同步。Ubuntu环境

一:防火墙 ufw status 二:下载 分别是(环境依赖,网络模块依赖,安装包) git clone https://github.com/happyfish100/libfastcommon.git git clone https://github.com/happyfish100/libserverframe.git …