- Flask Framework Cookbook
- Shalabh Aggarwal
- 342字
- 2021-08-05 17:17:20
Being deployment specific with instance folders
Flask provides yet another way of configuration where we can efficiently manage deployment-specific parts. Instance folders allow us to segregate deployment-specific files from our version-controlled application. We know that configuration files can be separate for different deployment environments such as development and production, but there are many more files such as database files, session files, cache files, and other runtime files. So, we can say that an instance folder is like a holder bin for these kinds of files.
How to do it…
By default, the instance folder is picked up from the application automatically if we have a folder named instance
in our application at the application level:
my_app/ - app.py - instance/ - config.cfg
We can also explicitly define the absolute path of the instance folder using the instance_path
parameter on our application object:
app = Flask( __name__, instance_path='/absolute/path/to/instance/folder' )
To load the configuration file from the instance folder, we will use the instance_relative_config
parameter on the application object:
app = Flask(__name__, instance_relative_config=True)
This tells the application to load the configuration file from the instance folder. The following example shows how this will work:
app = Flask( __name__, instance_path='path/to/instance/folder', instance_relative_config=True ) app.config.from_pyfile('config.cfg', silent=True)
How it works…
In the preceding code, first, the instance folder is loaded from the given path, and then, the configuration file is loaded from the file named config.cfg
in the given instance folder. Here, silent=True
is optional and used to suppress the error in case config.cfg
is not found in the instance folder. If silent=True
is not given and the file is not found, then the application will fail, giving the following error:
IOError: [Errno 2] Unable to load configuration file (No such file or directory): '/absolute/path/to/config/file'
Note
It might seem that loading the configuration from the instance folder using instance_relative_config
is redundant work and can be moved to one of the configuration methods. However, the beauty of this process lies in the fact that the instance folder concept is completely independent of configuration, and instance_relative_config
just compliments the configuration object.
- 基于粒計算模型的圖像處理
- Apache Oozie Essentials
- Mastering JavaScript Object-Oriented Programming
- 微服務與事件驅動架構
- Java Web基礎與實例教程(第2版·微課版)
- 算法訓練營:入門篇(全彩版)
- R語言編程指南
- C語言程序設計
- Modern JavaScript Applications
- Learn React with TypeScript 3
- 微信小程序入門指南
- Python深度學習原理、算法與案例
- HTML+CSS+JavaScript網頁設計從入門到精通 (清華社"視頻大講堂"大系·網絡開發視頻大講堂)
- 智能手機故障檢測與維修從入門到精通
- Maker基地嘉年華:玩轉樂動魔盒學Scratch