Skip to content

WIP_v0_9_customize_app_zh

Neuron Teckid edited this page Apr 28, 2016 · 1 revision

v0.9 定制应用行为

Redis Ctl 支持通过继承 app.RedisCtl 类型并覆盖其中一些成员函数来定制部分行为. 直接修改 config.py 或通过传入字符串类型的环境变量 APP_CLASS 最终将 config.App 类型替换成定制的类型.

例如, 在 override.py 中实现此类型, 命名为 MyApp, 然后使用

APP_CLASS=override.MyApp python main.py

指定之并启动; 或者直接修改 config.py 将最后一行修改为

import override
App = override.MyApp

可定制的函数

类型 app.RedisCtl 的通用函数如下

# 构造函数; 继承自此类的子类应当在自身的构造函数开始处调用之
#   - config: 全局配置; 通常情况下, 使用 import config; App(config) 来构造之
__init__(self, config)

# 根据全局 config 中 MYSQL_* 配置项构造出适用于 SQLAlchemy 的 mysql 数据库访问地址
# 如果使用其他数据库, 覆盖此函数并修改相应实现
db_uri(self, config)

# 额外的 Flask Blueprint; 此函数默认返回空列表; 如果应用需要加载额外的 Blueprint, 覆盖之
# 返回值列表中的每个元素应为一个 Blueprint 对象
ext_blueprints(self)

其他定制支持