Django_redis的一些方法与Celery配置

博客介绍了Django_redis的使用方法,包括数据库导入和存储数据,以及通过管道导入和存储数据,管道可节省资源。还提及了Celery配置,包含配置文件、主文件等,同时说明了启动和调用Celery的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django_redis的一些方法与Celery配置

1. django_redis数据库导入和存储数据
from django_redis import get_redis_connection #导如django_redis包

# reids数据库有16个库,每个库都存储某中数据,所以在存储之前要在django的setting里给redis存储的某个库配置名称
变量名 = get_redis_connection(redis数据库的某个库名)
变量名.setex(在redis里存储的键,存储的过期时间秒为单位,在redis里存储的值)
变量名.get(在redis里要查询的键名)
2. django_redis数据库通过管道导入和存储数据

管道:django_redis中的管道,可以使客户端一次发送多个请求,等请求发送完之后,redis数据库一次性读取全部请求,然后给出响应。可以节省资源。只需要与redis数据库进行一次交互。。

from django_redis import get_redis_connection  # 导入django——redis的包

# reids数据库有16个库,每个库都存储某中数据,所以在存储之前要在django的setting里给redis存储的某个库配置名称
变量名1 = get_redis_connection(redis数据库的某个库名)
变量名2 = 变量名1.pipeline()
变量名2.setex(在redis里存储的键,存储的过期时间秒为单位,在redis里存储的值)
# 开启管道(很重要,否则对数据库的操作执行不了)
变量名2.execute()

  1. Celery配置文件(创建一个新的进程执行耗时代码)
    main.py(主文件)
    • from celery import Celery
      import os
      # 3. 读取django的配置。设置django的环境变量 (和manage.py里面的差不多,没必要上设置default,直接加入环境变量里就可以)
      os.environ["DJANGO_SETTINGS_MODULE"] = "meiduo_mall.settings.dev"
      
      # 1.创建celery实例-----小括号里面的是给Celery起的名字
      celery_app = Celery('meiduo')
      
      # 2.加载celery配置
      celery_app.config_from_object('celery_tasks.config')
      
      # 4. 加载任务
      celery_app.autodiscover_tasks([
          # 因为tasks.py文件是固定的,所以只要写到celery_tasks.sms就行了。会自动找到tasks.py文件
          # 而tasks.py文件里只要加了装饰其的都被识别成任务,所以也不要去写了
          "celery_tasks.sms"
      ])config.py文件(配置文件)
      
    config.py(配置文件)
    • # Celery配置  5672是rabbitMQ的端口
      # 指定rabbit作为celery的队列
      # broker_url= 'amqp://guest:guest@192.168.103.158:5672'
      # 指定自己的本机ip地址
      broker_url= 'amqp://guest:guest@127.0.0.1:5672'
      
    tasks.py
    • #TODO 这个文件的名字是固定的。不能改名字
      from celery_tasks.main import celery_app
      # 导入发送手机验证码的包
      from meiduo_mall.libs.yuntongxun.sms import CCP
      # 导入发送的短信过期时间的包
      from celery_tasks.sms import constans
      
      # 将celery的装饰其,装饰send_sms
      """
          bind:保证task对象会作为第一个参数自动传入
          name:异步任务别名
          retry_backoff:异常自动重试的时间间隔 第n次(retry_backoff×2^(n-1))s
          max_retries:异常自动重试次数的上限
      """
      @celery_app.task(bind=True, name="send_sms")
      # self为指定当前任务对象
      def send_sms(self, mobile,sms_code,retry_backoff=3):
          # 3. 发短信
          # 将耗时的代码封装在一个方法中
          ccp = CCP()
          # 如果成功会返回0,失败会返回-1
          ret = ccp.send_template_sms(mobile, [sms_code, constans.SMS_CODE_EXPIRES / 60], 1)
          
          # 所以要做一个判断
          if ret != 0:
              # 有异常自动重试3次
              raise self.retry(exc=Exception('发送短信失败'), max_retries=3)
          # 如果成功了返回0
          return ret
      
      
  • 启动celery
    • 项目的根目录下输入:

    • # 需要先cd到项目得根目录下
      celery -A celery_tasks.main worker -l info
      # -A表示输出主文件的位置   -l表示输出日志的级别(-l可以不要)
      
  • 调用celery

    • 视图函数中调用:

    • #通过delay调用,可以在celery中去运行(将任务加到队列中,交给celery去运行)
              send_sms.delay(参数1, 参数2)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值