Django框架(十八)--读写分离,日志

一、读写分离

django使用读写分离

1.settings.py配置

Django框架(十八)--读写分离,日志_第1张图片

写:master(dafault)

读:slave

涉及到django服务如何选择使用数据库的问题

2.模型同步

注意

如果使用mysql数据库,首先应该先建库

使用sqlite3,不需要建库,直接数据迁移,同步表结构

python manage.py migrate --database slave

3.配置读写分离

使读写分别使用不同的数据库

使用自动模式

1.重写方法

重写的是数据库路由提供的方法,一共有4个,重写2个就可以了

  • db_for_read()
  • db_for_write()

在项目的主目录中,创建一个脚本文件mydbrouter.py,自定义数据库路由

Django框架(十八)--读写分离,日志_第2张图片

2.配置指定的数据库路由

Django框架(十八)--读写分离,日志_第3张图片

4.使用

按照配置,将数据写在了master库中,没有写在slave库中

数据库之间进行数据同步,需要在数据库中进行配置

一主多从

Django框架(十八)--读写分离,日志_第4张图片

问题:如何选择slave

数据库集群,关于选择slave,需要加一个权重,达到负载均衡

这里随机选择slave库

1.settings.py配置

Django框架(十八)--读写分离,日志_第5张图片

2.数据迁移

3.mydbrouter.py

Django框架(十八)--读写分离,日志_第6张图片

二、日志

python3中为我们提供了logging包,主要用于记录程序运行期间,产生让你给的全部日志,统一分析。

在项目根目录创建了一个loggingtest.py文件

日志等级

Django框架(十八)--读写分离,日志_第7张图片

日志配置

import logging

# 输出日志
# hander 句柄
logging_hander = logging.FileHandler('test.log',encoding='utf-8')
stream_hander = logging.StreamHandler()
log_format = '%(asctime)s【%(levelname)s】%(message)s'    # 日志格式
time_format = '%Y-%m-%d %H:%M:%S'    # 事件格式
# 日志配置
# 设置日志等级的设置
logging.basicConfig(level=logging.DEBUG,format=log_format,datefmt=time_format,handlers=[logging_hander,stream_hander])

# 调试,最详细的日志等级,通常用于问题项目的调试过程
logging.debug('这是debug等级')
# 详细程度仅次于debug,记录通常是关键节点的信息
logging.info('这是info等级')
# 警告,当某些不被期望的错误发生,但是不影响程序运行
logging.warning('这是warning等级')
# 出现严重的问题,导致部分功能不能运行
logging.error('这是error等级')
# 严重错误,导致程序中断
logging.critical('这是critical等级')

Django日志

django已经封装了log模块,提供了日志系统

工作中有两种选择

  • 使用刚才写的日志系统,进行封装
  • 使用django为我们封装好的

settings.py配置

# logging日志配置
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,    # 是否禁用之前的日志
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR,'debug.log'),
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

日志的使用

视图中导包
Django框架(十八)--读写分离,日志_第8张图片
Django框架(十八)--读写分离,日志_第9张图片

收集

在login视图中

Django框架(十八)--读写分离,日志_第10张图片
Django框架(十八)--读写分离,日志_第11张图片

你可能感兴趣的:(Django框架,django,数据库,主从分离,日志)