![](/img/trans.png)
[英]Python 3 Best practices on distinguish production and development configuration
[英]Python app configuration best practices
我知道之前已經討論過這個問題,但我正在努力尋找有關如何在本地開發和生產服務器之間進行配置的直白解釋。
到目前為止我做了什么:我有一個my_app_config.py
文件,其中有一個包含機器/場景(測試與生產)部分的部分,我可以注釋掉。 我將使用硬編碼的本地機器路徑、測試數據庫連接字符串、我的測試電子表格位置等進行開發。當需要將代碼部署到服務器時,我將“測試”部分注釋掉並取消“生產部分”的注釋。 正如您可能猜到的,這是錯誤的。
我最近采用了 Python ConfigParser 庫來使用.ini
文件。 現在,我的代碼中有以下幾行
import ConfigParser
config = ConfigParser.RawConfigParser()
config.read(os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'settings',
'my_app_config.ini')))
database_connect_string_admin = config.get('Database', 'admin_str')
這方面的問題很多...
my_app_config.ini
不能更改。 因此,我依靠.ini
文件內容中的注釋來了解我正在處理哪個文件。 它們存儲在文件夾樹中,所以我知道哪個是哪個。我試圖在程序開始時設置環境變量,但所有模塊的所有導入都在代碼啟動時立即執行。 我左右收到“未找到”錯誤。
我想要什么:了解如何將所有配置保存在一個不容易忘記我在做什么的地方。 我想要一種簡單的方法來將這些配置文件(最好是一個文件或腳本)置於版本控制之下(安全性是另一個問題,我離題了)。 我希望能夠無縫切換上下文(本地測試、本地生產、serverA-test、serverA-production、serverB-test、serverB-production)我的應用程序使用
my_app_config.ini
uwsgi.ini
應用服務器皇帝讀取的uwsgi.ini
web_config.py
應用程序使用的web_config.py
nginx.conf
鏈接到 Web 服務器的配置celery
配置更不用說所有東西的不同路徑(最好在魔法配置處理精靈中處理)。 我想一旦我弄清楚了這一點,我會為花了這么長時間才掌握的尷尬。
環境變量是我在這里嘗試做的嗎?
你必須嘗試`simple-settings 。 它會解決你所有的問題。 一種設置環境變量的方法
開發中
$ export SIMPLE_SETTINGS=settings.general,settings.development
$ python app.py
生產中
$ export SIMPLE_SETTINGS=settings.general,settings.production
$ python app.py
出於安全原因,您可以將“development.py” and
production.py”保留在存儲庫中。
例子
設置/general.py
SIMPLE_CONF = 'simple'
應用程序
from simple_settings import settings
print(settings.SIMPLE_CONF)
該文檔指出了更多的功能和優點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.