2014-02-09 61 views
2

我將一個Python Twisted應用程序移植到OpenShift,它將數據存儲到SQLite數據庫。在將數據庫文件放入git repo data/目錄(第一次部署期間)之後,我沒有任何問題,但數據庫僅在第二次部署時重置。如何在部署到OpenShift後保留SQLite數據庫以進行恢復?

我尋找一個合適的解決方案,這種怪異的行爲(考慮到數據庫是根據版本),然後我發現the answer in the OpenShift Knowledge Base

短期解決這個問題是存儲您的SQLite數據庫一個級別從'data'目錄中的git倉庫中啓動

現在我的問題是當我將數據庫移動到這個目錄時會發生什麼?我是否需要移動或複製數據目錄的內容?而這些數據將從部署保存到部署?

我試圖將數據庫從repo/data移動到data/目錄,但應用程序無法訪問此上層目錄。我正在尋找這個問題的最佳解決方案。

回答

3

我發現通過將我的應用程序數據的解決方案分爲兩大類:

  • 狀態數據
  • 動態數據

我留在repo/data目錄中的狀態信息,並讓我感動將更改後的數據永久保存到上一級目錄data/。此更改我能夠保持版本控制下的stateful_data在我混帳回購協議訪問它們通過:

__location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__))) 
static_data_folder = __location__ + '/data/' 

動態生成的數據,然後轉移到$OPENSHIFT_DATA_DIR這是不是版本控制之下,對應於上一級目錄我的app-root。我改變了我的getter我單身配置模塊中回到這個可變數據文件夾:現在

self.mutable_data_path = os.environ['OPENSHIFT_DATA_DIR'] + "mutable_data_subdir/" 

我測試此配置,但它似乎像一個魅力的工作。