插件开发¶
正在重写....
依赖注入¶
你可以通过依赖注入获得 PyFSD 的子组件、配置信息等。
所用可用依赖见依赖容器
详细用法见 dependency_injector
文档。基本用法如下:
db_engine = Provide[Container.db_engine]
# 获取数据库操作器为dbengine参数
@inject
def function_that_needs_db(dbengine = Provide[Container.db_engine]): ...
import
),PyFSD 会自动把Provide[依赖]
替换成真实的组件实例。 Note
如果有多个装饰器,@inject
必须是最底下一个(最靠近函数的一个)
注意!此种写法是无效的:
@inject
def function_that_do_something(db_engine = Provide[Container.db_engine]): ...
print(db_engine)
function_that_do_something() # 在导入插件的过程中就运行
<dependency_injector.wiring.Provide object at 0xae9b0f50c152>
import
)一个.py
文件之前必须先把它执行一遍,而 PyFSD 只能在插件导入之后再进行依赖注入。对于这种需要初始化插件的操作可以在插件的 setup
函数中完成。