[英]How to use a common ini configuration (between development and production) in pyramid?
[英]How to swap configuration files for Production and Development?
前一段時間,我使用Python創建了一個腳本,該腳本將在基於配置文件的實例中執行一些操作。
這是問題,我創建了2個配置文件。
Config.py
instance= <Production url>
Value1= A
Value2= B
...
TestConfig.py
instance= <Development url>
Value1= C
Value2= D
...
因此,當我希望腳本在開發實例中執行任務以進行測試時,只需導入TestConfig.py而不是Config.py。
Main.py
# from Config import *
from TestConfig import *
當我使用git更新腳本時,問題就來了。 如果要在開發中運行腳本,則必須手動修改文件,這意味着我將在服務器中進行未提交的更改。
進行此更改大約需要花費我1分鍾的時間,但是我感覺自己做錯了什么。
您是否知道完成這類任務的標准方法或正確方法?
使用:
try:
from TestConfig import *
except ImportError:
from Config import *
在生產中,刪除TestConfig.py
在計算機上導出環境變量,然后根據該環境變量選擇設置。
我認為Django最好使用local_settings.py
解決此問題。 基於這種方法。 在所有導入的末尾( from config import *
),只需添加:
# Add this at the end of all imports
# This is safe to commit and even push to production so long as you don't have local_config in your production server
try:
from local_config import *
except ImportError:
pass
並在每台計算機上創建一個local_config.py
。 這樣做是從config
導入所有內容,然后再從local_config
導入所有內容,並覆蓋全局配置設置(如果它們的名稱與config
內部的設置相同)。
如果您確實想在腳本中的生產環境和測試環境之間進行區分,則此處的其他答案將提供非常好的解決方案。 但是,我主張采用另一種方法:要正確地測試代碼,您應該創建一個完全獨立的測試環境並在其中運行代碼,而無需進行任何更改(或更改配置文件)。
由於我不知道腳本的作用,因此我無法針對該問題提出任何具體建議。 通常,您應該嘗試創建一個欺騙您的生產環境並完全隔離的沙箱。 您可以創建一個包裝器腳本,該腳本將在沙箱中運行您的代碼,並根據需要修改輸入和輸出,以使您的代碼與測試環境(而非生產環境)進行交互。 您應該在此包裝器中選擇運行代碼的環境以及使用的配置文件。
這種方法使測試從代碼本身中抽象出來,使兩者都更易於維護。 對於硬件而言,測試設計是一種合理的方法,在這種方法中,制造商必須保留自己擁有的硬件,但是對於軟件而言,意義不大,因為包裝和欺騙性數據更易於管理。 您不必僅僅為了處理測試就修改生產代碼庫。
當您要在測試和部署到生產之間進行切換時,這也完全消除了您忘記更改某些東西的機會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.