Django_redis的一些方法与Celery配置

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

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)
      
### DjangoRedis集成教程及最佳实践 #### 集成概述 为了提升Web应用程序性能并实现数据缓存功能,Django可以Redis数据库无缝协作。通过这种组合,开发人员能够显著提高网站响应速度以及处理高并发请求的能力。 #### 安装依赖库 要使Django支持Redis作为其缓存后端之一,需安装`django-redis`包[^1]: ```bash pip install django-redis ``` #### 设置配置文件 编辑项目的settings.py,在CACHES字典中指定使用Redis服务器作为默认缓存存储位置,并提供必要的连接参数: ```python CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379/1', # Redis server address and port number 'OPTIONS': { 'CLIENT_CLASS': 'django_redis.client.DefaultClient' } } } ``` #### 缓存页面片段 对于频繁访问但更新频率较低的数据,比如博客文章列表或者商品分类信息等,可以通过装饰器方式轻松设置这些内容被自动保存至Redis中一段时间: ```python from django.views.decorators.cache import cache_page @cache_page(60 * 15) # Cache this view for 15 minutes. def my_view(request): ... ``` #### 使用消息队列Celery配合Redis 当涉及到异步任务执行时,推荐采用Celery框架来管理后台作业调度;而Redis则适合作为其Broker服务端用于传递任务指令给worker进程. ```python # celery.py configuration snippet broker_url = 'redis://localhost:6379/0' result_backend = 'redis://localhost:6379/0' ``` #### 实现会话管理和身份验证 除了充当高速缓存层外,Redis还可以用来替代传统的基于Cookie的Session机制,从而允许更灵活高效的分布式部署方案. ```python SESSION_ENGINE = "django.contrib.sessions.backends.cache" SESSION_CACHE_ALIAS = "default" ``` 以上就是有关如何将DjangoRedis结合起来的一些基本指导原则和建议做法[^2].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值