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')
强制读取前端主从
任何想法如何解决这个问题?
你能缓存数据的memcached或将其保存到用户的会话? – Enrico
这是一个解决方法,但我想有一个更稳固的解决方案。 –
如果你想从奴隶读取,你将不得不等待数据传播到它,并会有一个延迟 - 无论是在你的应用程序,数据库或客户端。 – Enrico