django知识点扩展

1.在 Django 中实现 Redis 缓存,可以按照以下步骤进行操作:

  1. 安装 Redis:在服务器端安装 Redis 数据库。
  2. 安装 django-redis:使用 pip 命令安装 django-redis 库。
  3. 配置 settings.py:在 Django 项目的 settings.py 文件中添加 Redis 缓存的配置。示例代码如下:
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://your_host_ip:6379",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "PASSWORD": "yourpassword",
        },
    }
}

redis配置在视图函数中的用法

from django.core.cache import cache
from django.http import JsonResponse
import time

def cachedView(request):
    # 尝试从缓存中获取数据
    cachedData = cache.get('cached_key')
    if cachedData:
        return JsonResponse({'data': cachedData})

    # 如果缓存中没有数据,则生成并设置缓存
    data = {'message': 'This data is generated at ' time.strftime("%Y-%m-%d %H:%M:%S")}
    cache.set('cached_key', data, 60)  # 缓存 60 秒
    return JsonResponse(data)
假如需要更新可以判断前后数据是否发生变化,如果变化了就进行缓存更新
可以设置一个方法,便于更新判断
def should_refresh_cache():
    # 在此处定义缓存刷新的条件
    # 例如,检查某个时间戳、数据是否发生变化等
    return True  # 根据实际情况返回 True 或 False

CachedView 视图函数首先尝试从 Redis 缓存中获取名为 cached_key 的数据。如果存在,则直接返回缓存的数据。如果不存在,则生成新的数据,将其存储在缓存中并设置 60 秒的过期时间,然后返回新生成的数据。

2.django项目添加异步操作

  1. 安装依赖

    • 安装 Celery :pip install celery
    • 安装消息中间件,例如 Redis (用于存储任务队列):pip install redis
  2. 配置 Celery

    • 创建一个 celery.py 文件,通常位于项目的根目录或应用目录下。
    from celery import Celery

    app = Celery('your_project_name')

    # 配置消息中间件
    app.conf.broker_url ='redis://localhost:6379/0'  

    # 配置结果存储(可选)
    app.conf.result_backend ='redis://localhost:6379/1'  

    # 加载 Django 的设置
    app.config_from_object('django.conf:settings', namespace='CELERY')  

    # 自动发现任务
    app.autodiscover_tasks()
  1. 在 Django 的 settings.py 中添加相关设置
    INSTALLED_APPS = [
      ...
       'celery',
    ]

    # 其他 Celery 相关设置
    CELERY_BROKER_URL ='redis://localhost:6379/0'
    CELERY_RESULT_BACKEND ='redis://localhost:6379/1'

  1. 创建异步任务
    • 在应用的 tasks.py 文件中定义任务函数
    from celery import shared_task

    @shared_task
    def long_running_task(arg1, arg2):
        # 耗时的操作
        pass
在视图或者其他位置对异步任务进行调用
    from your_app.tasks import long_running_task

    def some_view(request):
        long_running_task.delay(arg1, arg2)
        # 继续其他操作

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值