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_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符号。    

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ps 滤镜:干画笔

Ps菜单:滤镜/滤镜库/艺术效果/干画笔 Filter Gallery/Artistic/Dry Brush 干画笔 Dry Brush滤镜用于模拟使用干画笔技术(介于油彩和水彩之间)绘制的效果。此滤镜特别适用于为图像添加粗糙而富有表现力的笔触效果,同时减少细节&…

多态:解锁面向对象编程的无限可能

1. 概述 多态(Polymorphism)是面向对象编程的三大核心特性之一(另两个是封装和继承)。多态意味着不同的对象对同一消息做出不同的响应。简单来说,多态允许你使用父类引用指向子类对象,并且当调用方法时&am…

设计模式分享

2. 策略模式 2.1 定义:策略模式定义了家族算法,分别封装起来(这些算法完成的都是相同的工作,只是实现不同),它可以用相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。此模式…

huggingface笔记:使用accelerate加速

1 介绍 随着模型规模的增大,并行处理已成为在有限硬件上训练大型模型和提高训练速度的重要策略。Hugging Face 创建了Accelerate库,帮助用户在任何类型的分布式环境中轻松训练Transformers模型,无论是单机多GPU还是跨多机的多GPU 2 创建Acce…

微信公众号自定义分销商城小程序源码系统 带完整的安装代码吧以及系统部署搭建教程

系统概述 微信公众号自定义分销商城小程序源码系统是一款功能强大的电商解决方案,它集成了商品管理、订单处理、支付接口、分销管理等多种功能。该系统支持自定义界面设计,商家可根据自身需求调整商城的页面布局和风格,打造独特的品牌形象。…

多客开源】游戏陪玩系统,游戏陪玩源码,游戏陪玩语音社交源码运营版游戏陪玩平台源码/tt语音聊天/声优服务/陪玩系统源码开黑/约玩源码

介绍 我们针对陪玩app源码市场的发展趋势,整合市面上主流陪玩app应用功能,自主开发了多客陪玩系统源码,并可为客户提供全部原生陪玩源码,进行二次开发,打造适用于线上游戏陪玩、语音聊天、心理咨询、情感陪伴等业务场…

玩转Matlab-Simscape(初级)- 08 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(案例实战)

** 玩转Matlab-Simscape(初级)- 08 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(案例实战) ** 目录 玩转Matlab-Simscape(初级)- 08 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真&…

RockTree Capital石木资本品牌升级 沉浸式“加密朋克风”网站震撼上线

总部位于北京的领先的Web3 原生加密基金与投资机构 RockTree Capital 石木资本,宣布推出全新沉浸式网站,在其中呈现一个未来主义电影风格概念:赛博朋克加密城市。这个前沿互动型城市景观代表着 RockTree Capital 对 Web3 普及以及技术、金融与…

AI预测体彩排3采取878定位大底=23策略+杀断组+杀组选+杀和尾+杀和值012缩水测试5月16日预测第2弹

昨天的87823大底测试第一次测试,已经成功命中! 今天继续测试,仍旧目标为:10期中至少5中期。好了,废话不多说了,直接上结果吧~ 首先,878定位如下: 百位:4,5,6,3,8,1,9,0…

【Unity Shader入门精要 第7章】基础纹理(三)

1. 渐变纹理 另外一种对于纹理的使用方式是通过渐变纹理为物体提供漫反射光照效果。 顾名思义,渐变纹理本身就是一张颜色渐变(可以是连续渐变,也可能是突变)的图片,这个渐变的过程模拟的就是光源从不同的角度照射物体…

Python代码:七、小数化整数

1、题目 日常生活中我们会遇到很多小数,但是有的人不喜欢小数,因此会用四舍五入的方式将其去掉。在Python中我们更加简单,可以利用强制类型转换将小数转变成整数,请你试一试。 2、代码 import sysn float(input()) print(int(…

JUnit5超时处理

测试过程中如果某条测试用例执行过程中阻塞,就会发生超时问题: 阻塞其他用例的执行对于某些用例,如果用例执行时间过长,那么本身就是bug 使用场景: 使用JUnit5自带的超时处理,当测试用例执行时间超过执行…

mybatis-plus-ui代码生成器

mybatis-plus-generator-ui 提供交互式的Web UI用于生成兼容mybatis-plus框架的相关功能代码,包括Entity,Mapper,Mapper.xml,Service,Controller等 ,可以自定义模板以及各类输出参数,也可通过SQL查询语句直接生成代码。 使用方法 引入mave…

邮箱API发信有哪些限制?如何设置API接口?

腾讯云邮箱API与AokSend相比,有哪些优势和特性差异? 使用邮箱API发信并非毫无限制,如何正确设置API接口并选择合适的服务商,成为企业关注的焦点。接下来,Aok将探讨邮箱API发信的限制、API接口的设置方法,以…

图文并茂:解析Spring Boot Controller返回图片的三种方式

欢迎来到我的博客,代码的世界里,每一行都是一个故事 图文并茂:解析Spring Boot Controller返回图片的三种方式 前言使用Base64编码返回图片使用byte数组返回图片使用Resource对象返回图片图片格式转换与性能对比 前言 在互联网的世界里&…

LiveGBS流媒体平台GB/T28181用户手册-国标设备:设备列表、通道列表、流传输模式修改、查看通道播放、设备录像、在线状态、流量统计

LiveGBS流媒体平台GB/T28181用户手册-国标设备:设备列表、通道列表、流传输模式修改、查看通道播放、设备录像、在线状态、流量统计 1、国标设备1.1、设备列表1.1.1、查看通道1.1.2、更新通道1.1.3、编辑1.1.3、导入导出1.1.4、条件检索1.1.5、设备状态记录1.1.6、设备流量统计…

太平洋产险海南分公司提醒您:高温来袭!新能源车该如何正确充电?

据不完全统计 近三年来 7-8月一直是电动汽车烧车事故的高发期 毕竟夏季的高温影响着动力电池的状态新能源汽车为什么会自燃? 小保替你们找到了央视的官方回答! 原来 新能源汽车比传统燃油车多了一套电池系统 电解液为可燃物 当热量聚集达到燃点却没…

【错题集-编程题】主持人调度(二)(贪心 + 优先级队列)

牛客对应题目链接:主持人调度(二)_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 把区间按照左端点排序,然后搞个堆: 先把第⼀个区间的右端点加⼊到堆中。遍历后⾯的区间,分情况讨论:&#xff…

双向链表结构

1.双向链表定义 双向链表也叫双链表&#xff0c;是链表的一种&#xff0c;它的每个数据节点中都有两个指针&#xff0c;分别指向直接前驱和直接后继。 2.实现双向链表 2.1创建双向链表类 /*** 基于双向链表实现元素存取的容器* param <E>*/ public class MyDoubleLinked…

设计模式六大原则之依赖倒置原则

文章目录 概念逻辑关系 小结 概念 依赖倒置原则指在设计代码架构时&#xff0c;高层模块不应该依赖底层模块&#xff0c;二者都应该依赖抽象。抽象不应该依赖于细节&#xff0c;细节应该依赖于抽象。 逻辑关系 如上图所示&#xff0c;逻辑应该就是这样&#xff0c;高层依赖于…