官术网_书友最值得收藏!

  • 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.

主站蜘蛛池模板: 平顶山市| 万源市| 岚皋县| 富阳市| 开平市| 安多县| 吉林省| 聂荣县| 海原县| 夏河县| 黎平县| 逊克县| 佛坪县| 随州市| 大邑县| 五家渠市| 崇州市| 宁蒗| 乌兰浩特市| 宁乡县| 阿城市| 山东省| 贺兰县| 堆龙德庆县| 会昌县| 高雄市| 大理市| 台湾省| 武汉市| 红桥区| 厦门市| 灵台县| 酉阳| 广昌县| 化州市| 香格里拉县| 镇宁| 长子县| 鹿邑县| 桃江县| 湖口县|