Django

该标签下共有 2 篇文章

Django 使用 Redis 实现全站缓存

想着提升下网站性能,开始学习折腾 Redis 缓存,记录下。 1. 安装 Redis apt update # 安装 apt install redis-server # 虚拟环境安装 django-redis pip install django-redis 2. Redis 参考配置 # 绑定本机(禁止外部访问) bind 127.0.0.1 ::1 # 数据库数量 databases 5 # 持久化 save 900 1 save 300 10 save 60 10000 # 密码 requirepass XXOO.OOXX # 内存限制 maxmemory 256mb # 内存满时策略:删除最少使用的缓存 maxmemory-policy allkeys-lru # 客户端配置 timeout 300 tcp-keepalive 300 3. 配置 django # settings.py # 全站缓存,必须保持在最前和最后 MIDDLEWARE = [ 'django.middleware.cache.UpdateCacheMiddleware', # ... 其他中间件 ... 'django.middleware.cache.FetchFromCacheMiddleware', ] # Redis配置 CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379/1', 'OPTIONS': { 'CLIENT_CLASS': 'django_redis.client.DefaultClient', 'PASSWORD': 'XXOO.OOXX', "SOCKET_CONNECT_TIMEOUT": 5, "SOCKET_TIMEOUT": 5, } } } CACHE_MIDDLEWARE_SECONDS = 21600 CACHE_MIDDLEWARE_KEY_PREFIX = 'Codenotes:' 4. 更新清理缓存 # admin.py @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('title', 'category', 'publish_date', 'author', 'hits', 'status') # 保存时清理 def save_model(self, request, obj, form, change): obj.save() cache.clear() # 删除时清理 def delete_model(self, request, obj): obj.delete() cache.clear() # 批量删除时清理 def delete_queryset(self, request, queryset): queryset.delete() cache.clear() 网站访问效率多多少少会提升一些…

Django-crontab 配置

折腾了个双色球和大乐透的历史数据库,然后最新的需要定时走免费API获取下,顺道学习了下 Django-crontab 的配置使用 1. 下载安装 pip install django-crontab 2. 应用配置 # settings.py # 添加应用 INSTALLED_APPS = [ …… 'django_crontab', ] # 配置定时任务 CRONJOBS = [ # 分 时 日 月 周 要执行的命令/脚本(对应创建的 tasks.py 里的业务函数) ('0 0 * * *', 'lottery.tasks.update_dlt', '>> /tmp/lottery_dlt.log 2>&1'), ] 3. 定时程序 # 应用中创建 tasks.py # 定时任务 def update_dlt(): url = 'https://api.ooxx.com' data = requests.get(url).json() # 业务处理等 4. 开启、查看、清除 # 开启 python3 manage.py crontab add # 查看 python3 manage.py crontab show # 清除 python3 manage.py crontab remove 可以修改到就近时间,查看日志了解具体业务情况。 定时参考配置 # crontab 定时参考,格式为: 分 时 日 月 周 command # 每分钟执行一次 * * * * * command # 每小时的第 5 分钟执行 5 * * * * command # 每天 2 点 30 分执行 30 2 * * * command # 每周日凌晨 3 点执行 0 3 * * 0 command # 每月 1 号 5 点执行 0 5 1 * * command # 每 15 分钟执行一次 */15 * * * * command # 工作日(周一到周五)早上 8 点执行 0 8 * * 1-5 command # 每年 1 月 1 日执行 0 0 1 1 * command

广告 【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中