Django的循环多数据库路由器。

django-multidb-router的Python项目详细描述


`` multidb``提供两个django数据库路由器,可用于主副本数据库
部署。



在设置中定义“副本数据库”。它应该是
数据库别名的列表,可以在``databases``::


databases={
‘default':{…},
‘shadow-1':{…},
‘shadow-2':{…},
}
replica-u databases=['shadow-1',“shadow-2”]

然后将“multidb.replicarouter”放入数据库路由器::


database-routers=(“multidb.replicarouter”,)


将以循环方式选择副本数据库。

使用
`` multidb.get_replica``::


接收写操作的主数据库与其复制到副本的
之间的延迟足以导致最终用户不一致。
例如,假设一个场景的复制延迟为1秒。如果用户
发表论坛帖子(到主论坛),然后在500毫秒后重定向到完全呈现的
视图(从副本),则视图将失败。如果这是应用程序中的问题
,请考虑使用“multidb.pinningreplicarouter”。这个
路由器与``multidb.middleware.pinningroutermiddleware``
结合使用,以确保在写入``default``数据库之后,将来从
同一用户代理读取的数据将定向到“默认”数据库,读取时间长度可配置



``都是写的。您可以使用“multidb.db\u write”装饰符指示任何视图写入数据库。这将导致与请求相同的结果,例如“post”。

这不会导致在此
请求中使用“默认”数据库,而只会在下一个请求中使用。


配置
==


若要使用“固定复制路由器”,请将其放入
设置中的“数据库路由器”:

它必须在执行数据库写入的任何其他中间件
之前列出::

middleware类=(
'multidb.middleware.pinningroutermiddleware',
…此处有更多的中间件…


``pinningroutermiddleware``将cookie附加到刚刚写入的任何用户代理。cookie的过期时间应设置为大于复制延迟。默认情况下,它的值是保守的15秒,但如果需要更改cookie的名称,可以对其进行如下调整:


multidb_pinning_seconds=5

,使用``multidb_pinning_cookie`
设置::




``use_primary_db`
====

``multidb.pinning.use_primary_db``既是上下文管理器,也是
包装代码的装饰器,以使用主数据库。您可以将其用作上下文管理器:

/>def func(*args,**kw):
“接触主数据库。”



django
和python使用tox:


$pip安装tox


$tox



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
onclicklistner中的java全局变量   Android中的Tensorflow:java。尼奥。BufferOverFlowException   java无法预先部署处于无效状态的PersistenceUnit[PU][DeployFailed]   java Liferay;将其他参数传递给jQuery UI aotocompleter   java如何使用Netflix/Eureka服务中的发现信息在Netflix/Zuul和Netflix/Ribbon中启用自动路由?   java如何使用命令打开spotlight   java Android为按钮分配数组值   jsp java。NoClassDefFoundError:即将推出java servlet   应用程序存储设置的java意图   java Android viewflow验证   java如何为多个列表重用BaseAdapter视图   在Java中,socket通过internet发送多播数据包   JavaXStream加载自定义XML