[英]Dynaconf overwrites sections at settings.toml with .secrets.toml
我正在使用 Dynaconf (3.1.2) 來處理我的 python 應用程序設置。
如果我在settings.toml
和.secrets.toml
使用相同的密鑰,則這些部分最后只有來自機密文件的值,而不再有來自設置文件的值。 我該如何處理?
我有以下設置:
# settings.toml
[smtp]
host = "mail.myserver.com"
port = 587
username = "me@myserver.com"
# .secrets.toml
[smtp]
password = "mysecretpassword"
當我嘗試獲取 settings.smtp.host 時,出現以下異常:
dynaconf.vendor.box.exceptions.BoxKeyError: "'DynaBox' object has no attribute 'HOST'"
在調試設置對象時可以看到:
'SMTP': <Box: {'password': 'mysecretpassword'}>
您需要允許合並。 Dynaconf 將在加載文件時覆蓋配置。 在您的情況下, settings.toml
的內容將被.secrets.toml
覆蓋,因為它是在settings.toml
之后加載的。
為避免這種情況,您可以啟用dynaconf_merge
。
# settings.toml
[smtp]
host = "mail.myserver.com"
port = 587
username = "me@myserver.com"
# .secrets.toml
[smtp]
dynaconf_merge = true
password = "mysecretpassword"
這會將您的smtp
對象從.secrets.toml
合並到settings.toml
並且不會覆蓋。
您還可以啟用全局合並,例如
# .secrets.toml
dynaconf_merge = true
[smtp]
password = "mysecretpassword"
這將在所有對象合並.secret.toml
與在同一名稱的對象settings.toml
參考: https : //www.dynaconf.com/merging/#local-configuration-files-and-merging-to-existing-data
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.