2012-11-27 58 views
1

我有一個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

回答