存儲的API密鑰和配置變量在靜態文件是通常總是一個壞主意,有幾個原因:
- 努力更新:你需要以更新部署新的應用程序值
- 不安全:你可能會提交到版本控制系統並沒有回來的路上
- 不要放大:很多時候你必須爲不同的域
那麼,爲什麼不存儲直接從所有這些值不同的密鑰的安全十分開始在數據存儲,尤其是當它實際上是如此容易得多,這裏是如何:
所有你必須做的是爲您的配置值創建一個新模型,並且只有一條記錄。通過使用NDB,您可以開箱即用緩存,並且由於此配置文件的性質,您甚至可以對每個正在運行的實例進行緩存,以避免定期讀取數據存儲區。
class Config(ndb.Model):
analytics_id = ndb.StringProperty(default='')
brand_name = ndb.StringProperty(default='my-awesome-app')
facebook_app_id = ndb.StringProperty(default='')
facebook_app_secret = ndb.StringProperty(default='')
@classmethod
def get_master_db(cls):
return cls.get_or_insert('master')
我也猜你已經有一個文件,最有可能被稱爲config.py
,你有一些常量像這樣的:
PRODUCTION = os.environ.get('SERVER_SOFTWARE', '').startswith('Google App Engine')
DEVELOPMENT = not PRODUCTION
如果不創建一個或者你不只是內容添加到該文件還有:
import model # Your module that contains the models
CONFIG_DB = model.Config.get_master_db()
終於可以說,無論在您的應用程序(導入後閱讀,你可以簡單地做你的配置值當然):
config.CONFIG_DB.brand_name
從現在起,你甚至不必創建任何特殊形式來更新這些值(建議雖然),因爲你可以從本地管理控制檯或儀表板在生產上。
請記住,如果您要將該記錄存儲在本地變量中,則必須在更新值後才能重新啓動instances以查看更改。
上述所有你可以在行動中看到它,我叫gae-init開源項目之一。
我使用settings.yaml文件進行所有自己的設置。我自己並沒有遇到問題。我使用單獨的部分進行測試,產品等...因此每個部分都是獨立的。這樣我就不會交換/移動settings.yaml。 –
我使用appengine_config:lib_config默認和掛鉤:https://developers.google.com/appengine/docs/python/tools/appengineconfig#Python_Module_Configuration – voscausa