簡體   English   中英

如何為生產和開發交換配置文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM