一个用于支持插件功能的 Flask 扩展。
注意:Flask 3及以上版本将不再被支持。
它能提供什么:
- 与 Application、Blueprint 相同的方式定义插件路由,同时提供所有的 Flask 功能(模板渲染、URL 构造、消息闪现、信号等等)
- 每个插件都可以在 Flask 运行时 启动、停止、重载。
- 与 Flask 一同配置,无需加载单独的配置文件。
- 插件自动发现与管理。
使用 pip 安装:
pip install flask-plugin
-
进入
example
目录,查看目录结构,可以看到在plugins
目录下有一个名为hello
的插件:example ├── app.py └── plugins └── hello ├── __init__.py └── plugin.json
-
在
app.py
文件中加载插件管理器,并启动hello
插件:from flask import Flask from flask_plugin import PluginManager app = Flask(__name__) manager = PluginManager(app) plugin = manager.find(id_='962e3b6cd8b74d02a5a02f1e3651ef87') if plugin: manager.load(plugin) manager.start(plugin) ... # API Management code here app.run()
-
在
SayHello/plugin.json
中定义插件信息:{ "id": "962e3b6cd8b74d02a5a02f1e3651ef87", "domain": "hello", "plugin": { "name": "Greeting", "author": "Doge", "summary": "Hello Flask-Plugin." }, "releases": [] }
-
在
SayHello/__init__.py
中实例化Plugin
类,并像在Flask
中一样定义路由:from flask_plugin import Plugin from flask import redirect, url_for plugin = Plugin() ... # Other routes defined here @plugin.route('/<string:name>', methods=['GET']) def say(name: str): return 'Hello ' + name
-
访问
/plugins/hello/doge
,看到一个给匿名用户的问候:Hello doge!
通过访问
/api/stop/347336b4fcdd447985aec57f2bc5793c
停止插件,再次检查上面的链接,会得到一个HTTP 404
错误。
更多信息和文档参见:Flask-Plugin Documentation
该项目基于 Pallets项目组 的诸多开源项目,在此表示感谢.
同时感谢我的家人和朋友们。