Django,智能地在主从之间路由

Django,智能地在主从之间路由

问题描述:

我有一个django应用程序,它有一个前端输入数据和一个API来提供数据。有一个主/从设置,所以我使用数据库路由器来管理写入主机和从机读取。Django,智能地在主从之间路由

import random 
from django.conf import settings 

class DBMasterSlaveRouter(object): 
    def db_for_read(self, model, **hints): 
     if len(settings.DB_SLAVES) >= 1: 
      return random.choice(settings.DB_SLAVES) 
     else: 
      return settings.DB_MASTER 

    def db_for_write(self, model, **hints): 
     return settings.DB_MASTER 

    def allow_syncdb(self, db, model): 
     return True 

我遇到的问题是在前端,用户输入数据和点击保存,页面重新加载并加载从从站的数据(这发生得很快),由于主从之间的滞后,负载不会反映最新的输入。我不想拖延页面加载。现在我必须添加using('default')强制读取前端主从

任何想法如何解决这个问题?

+0

你能缓存数据的memcached或将其保存到用户的会话? – Enrico

+0

这是一个解决方法,但我想有一个更稳固的解决方案。 –

+0

如果你想从奴隶读取,你将不得不等待数据传播到它,并会有一个延迟 - 无论是在你的应用程序,数据库或客户端。 – Enrico

看起来是这样的答案:

https://github.com/jbalogh/django-multidb-router