启用注入器的python应用程序微框架
cask的Python项目详细描述
cask启用注入器,python应用程序在烧瓶之后建模。
它的目的是使您在开发应用程序时需要编写的样板文件数量更小。下面是一个简单的示例:
>>>fromcaskimportCask>>>frominjectorimportinject>>>>>>defconfigure(binder):...binder.bind(str,to='ABC')...>>>@Cask.run_main(modules=[configure])...@inject(s=str)...defmain(s):...print(s)...ABC
Cask.run_main(它同时作为类和实例方法工作,见下文)为您执行if __name__ == '__main__'检查。所以这个
>>>app=Cask()>>>@app.run_main...defmain():...print(111)...111
是
的较短版本>>>app=Cask()>>>@app.main...defmain():...print(222)...>>>if__name__=='__main__':...app.run()...222
结构
Cask构造函数和Cask.run_main类方法接受以下可选关键字参数:
- modules-iterable of injector modules,默认为空序列
- injector-要配置和使用的注入器实例,默认情况下将为您创建新实例
挂钩
Caskinstance提供了以下修饰符,允许您注册挂钩(注意,您可以注入已注册的函数):
Cask.before_main-应该不需要参数,如果返回非none值,则不会执行应用程序执行主函数
Cask.after_main-应为单个result参数,并返回已处理的结果(是否已修改)
Cask.exception_handler(ExceptionCLass)-将处理在应用程序执行过程中引发的异常,应该需要一个名为e的参数并包含异常值:
>>>app=Cask()>>>@app.exception_handler(Exception)...defhandle(e):...print('got exception %s'%(e,))...>>>@app.run_main...defmain():...raiseException(123)...gotexception123
Cask.main-main函数不需要参数,并且可能返回某些内容
当然,您可以为main以外的钩子注册多个可调用函数。
注意
如果有的话,将只调用第一个匹配的exception_handlerhook。
执行
这是运行基于容器的应用程序时发生的情况:
- 使用提供的modules 配置注入器
- before_main钩子被调用
- 如果before_mainhook没有返回与none不同的值,则执行mainhook
- after_main钩子被调用
版权所有
版权所有(c)2013 Jakub Stasiak
此源代码是在mit许可下授权的,有关详细信息,请参阅许可文件。