python - Django-admin 自定义命令不存储缓存值
问题描述
使用 django 命令时出现意外行为。
我正在使用标准的 Django 缓存系统。我的设置 :
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake',
'TIMEOUT': 0,
}
}
这是我的命令代码:
#coding: utf-8
import os
import sys
import time
from django.core.management.base import BaseCommand
from django.core.cache import cache
class Command(BaseCommand):
def handle(self, *args, **options):
print(cache.get("mykey"))
print(cache.set("mykey", "TEST", 300))
当我在同一分钟内运行它两次时,我得到以下输出:
(venv_crypto_bot) macbook-pro:project dauzon$ python manage.py generate_data
None
None
(venv_crypto_bot) macbook-pro:project dauzon$ python manage.py generate_data
None
None
我在开发服务器上。
显然,当我使用命令时,Django 不会将值存储在缓存中。我不知道是不是因为我运行了开发服务器。
当我访问我的开发服务器的网页时,缓存运行正常。
Django 文档中没有关于禁用缓存(根据命令)的详细信息。
如何在 Django 自定义命令中存储缓存值?
解决方案
问题可能是您正在运行未通过多个流程实例共享的LocMemCache
请注意,每个进程都有自己的私有缓存实例,这意味着不可能进行跨进程缓存。这显然也意味着本地内存缓存的内存效率不是特别高,因此它可能不是生产环境的好选择。有利于发展。
推荐阅读
- excel - 自动启用库
- java - 当 Origin 被定义为 webapp 自己的主机名以外的任何内容时,Spring boot 2.2.4.RELEASE 为 GET 请求返回 403
- c# - 对 signInManager.PasswordSignInAsync 进行故障排除
- sql - 如何使用 SQL 将数字列表拆分为具有固定间隔的范围?
- ruby-on-rails - 带有 React Webpack 的 Ruby on Rails - 定义/访问环境变量?
- javascript - 使用单选按钮的嵌套问题切换
- xml - Powershell按字符串值选择节点
- apache-spark - 如何像运行 Python 作业一样运行 pyspark shell 代码
- css - 如何使用顺风使 CSS 网格项目具有自动高度?
- bigbluebutton - 有没有办法修改 bbb-install.sh 脚本以允许服务器在 2 个内核上运行(低于最低规格)