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

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_literalsimport 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_literalsfrom .celery import app as celery_app__all__ = ('celery_app',)

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

在这里插入图片描述

import logging
import sysfrom celery import shared_task
from django.http import JsonResponse@shared_task
def your_async_task(arg1):try:# 异步任务逻辑result = arg1return 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.mzph.cn/news/838797.shtml

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

相关文章

LLM大模型多模态面试题(二)

1. 介绍transformer算法 Transformer本身是一个典型的encoder-decoder模型,Encoder端和Decoder端均有6个Block,Encoder端的Block包括两个模块,多头self-attention模块以及一个前馈神经网络模块;Decoder端的Block包括三个模块&…

第九届“数维杯”大学生数学建模挑战赛(B题)深度剖析|建模完整过程+详细思路+代码全解析

问题1 首先,我们需要建立一个数学模型来计算热解产率,该模型为: Y m p m 0 100 % Y \frac{m_p}{m_0} \times 100\% Ym0​mp​​100% 其中, Y Y Y为热解产率,单位为 % \% %; m p m_p mp​为产物的质量&…

多态和多态性

【一】什么是多态 多态是指一个事物的多种形态 【二】示例 例如动物类中有猫类、狗类、猪类 import abc ​ ​ # 总类 动物类 class Animal(metaclassabc.ABCMeta):abc.abstractmethoddef talk(self):pass ​ ​ # 具体类 猫类 class Cat(Animal):def talk(self):print(f&q…

uniapp 实现下拉刷新 下滑更新

效果图 在app或者小程序中向下滑动 会出现刷新数据 ,而上拉到底 需要更新数据 功能实现 主要俩种方式 依赖生命周期 在page.json中开启 page.json "style" : {"navigationBarTitleText" : "小小练习","backgroundTextStyle": &qu…

狙击策略专用术语以及含义,WeTrade3秒讲解

想必各位交易高手对狙击策略不会陌生吧!但你想必不知道狙击策略的开发者为了推广狙击策略,在狙击策略基础的经典技术分析理论引入了自己的术语。今天WeTrade众汇和各位投资者继续了解狙击策略专用术语以及含义。 一.BL 银行级别(BL)是前一日线收盘的级别。时间是格…

微信小程序开发中怎么配置SSL证书?

在微信小程序开发中,配置SSL证书主要用于实现HTTPS请求,以保证数据传输的安全性。以下是配置SSL证书的基本步骤: 一、获取SSL证书 首先,你需要获取一个有效的SSL证书。SSL证书可以被广泛信任的证书颁发机构申请,如Jo…

【GoLang基础】Go常用字符串函数详解

Go 语言提供了一系列强大的字符串处理函数。这些函数主要集中在 strings 和 strconv 包中。下面是一些常用的字符串函数及其详解。 1. strings 包 1.1. Contains 检查字符串是否包含子串。 import ("fmt""strings" )func main() {str "hello wor…

rocketmq的顺序消息开发注意事项

1. 参考消息重试,要对 MaxReconsumeTimes进行设置。之前就是因为没有进行设置,导致了队头阻塞问题。 rokcetmq和kafka一样,当顺序消息写入的多个队列中后,如果是顺序消息,当前的队列的队头一直消费失败的时候&#x…

“分块”算法的基本要素及 build() 函数的构建细节

【“分块”算法知识点】 ● 分块是用线段树的分区思想改良的暴力法。代码比线段树简单。效率比普通暴力法高。分块适合求解 m=n=10^5 规模的问题,或 m*sqrt(n)≈10^7 的问题。其中,n 为元素个数,m 为操作次数。 ● “分块”算法的基本要素 (1)块的大小用 block 表示。通常…

JVM运行时内存:本地方法接口与本地方法栈

文章目录 1. 什么是本地方法?2. 为什么要使用Native Method?3. 本地方法现状 运行时内存整体结构如下图所示: 1. 什么是本地方法? 简单地讲,一个Native Method就是一个Java调用非 Java 代码的接口。一个Native Method是这样一个 …

【Linux】linux | 配置系统日志 | 安全日志 | 操作日志 | 登录日志

一、诉求 1、linux服务器开启日志功能,并记录10个月的登录 二、操作 1、进入目录 cd /etc 2、编辑配置 vi logrotate.conf 3、复制配置 /var/log/wtmp {monthlycreate 0664 root utmpminsize 1Mrotate 10 }/var/log/btmp {missingokmonthlycreate 0600 root …

vue2人力资源项目9权限管理

页面搭建 <template><div class"container"><div class"app-container"><el-button size"mini" type"primary">添加权限</el-button><el-table-column label"名称" /><el-table-co…

Spring Boot代码案例(计算器、登录、留言板)

文章目录 一、计算器二、登录2.1 判断账号密码是否正确2.2 根据不同的用户作出不同反应 三、留言板3.1 提交数据3.2 展示所有数据 四、Lombok 工具包4.1 场景介绍4.2 如何使用 五、Edit Starters插件六、项目如何Debug七、项目命名规范 一、计算器 导入前端文件后端代码&#…

AI Agent是什么?未来如何发展

AI Agnt是什么 AI代理&#xff08;AI Agent&#xff09;是指一种利用人工智能技术来执行特定任务或解决特定问题的自主软件程序。这些代理通过学习和模拟人类行为或特定领域的知识&#xff0c;能够在无需人为干预的情况下完成复杂的任务。AI代理广泛应用于多个领域&#xff0c…

SSM【Spring SpringMVC Mybatis】—— SpringMVC

目录 1、初识SpringMVC 1.1 SpringMVC概述 1.2 SpringMVC处理请求原理简图 2、SpringMVC搭建框架 2.1 搭建SpringMVC框架 3、RequestMapping详解 3.1 RequestMapping注解位置 3.2 RequestMapping注解属性 3.3 RequestMapping支持Ant 风格的路径&#xff08;了解&#…

VUE中,图片正常显示但是触发了@error

我的项目中图片是从后端获取的&#xff0c;不能确定后端返回的图片链接是否能正常访问&#xff0c;并且希望当链接异常时直接不显示图片&#xff0c;而不是裂口的图片&#xff0c;所以我的代码如下&#xff1a; <img :src"logoUrl" class"logo" id&quo…

【Linux玩物志】Linux环境开发基本工具使用(1)——vim

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; Linux开发工具 首先我们要知道vim是什么&#xff1f; vi&#xff08;Visual Editor&#xff09;是由美国程序员比尔乌尔曼&#xff08;Bill Joy&#xff09;于1976年开发的&#xff0c;最初是为了在Unix系统上进行文本编…

技术前沿 |【大模型LLaMA:技术原理、优势特点及应用前景探讨】

大模型LLaMA&#xff1a;技术原理、优势特点及应用前景探讨 一、引言二、大模型LLaMA的基本介绍三、大模型LLaMA的优势特点五、结论与展望 一、引言 随着人工智能技术的飞速发展&#xff0c;大模型已成为推动这一领域进步的重要力量。近年来&#xff0c;大模型LLaMA以其卓越的…

我和jetson-Nano的故事(11)——在ros中编译usb_cam

在jetson nano中编译旧版本的usb_cam 1. 问题背景1.1 jetson nano的软件环境版本 2.问题现象3.问题原因及解决办法 1. 问题背景 最近给jetson nano重装了系统之后&#xff0c;在编译今年人工智能ROS小车比赛用的工程包的时候&#xff0c;遇到一个问题迟迟没有解决&#xff0c;…

惠海 H4112 同步整流30V降压芯片IC 24V转12V5V3.3V3.5A方案EN使能控制

惠海H4112同步整流30V降压芯片IC是一款DCDC电源管理芯片&#xff0c;它具备精确恒压和恒流的同步降压能力&#xff0c;适用于多种应用场景&#xff0c;如汽车充电器、照明灯、便携式设备供电电源和电池充电器等。 输出电压与电流调整&#xff1a; H4112支持输出电压在2.5V到2…