启用注入器的python应用程序微框架

cask的Python项目详细描述


Build status

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。

执行

这是运行基于容器的应用程序时发生的情况:

  1. 使用提供的modules
  2. 配置注入器
  3. before_main钩子被调用
  4. 如果before_mainhook没有返回与none不同的值,则执行mainhook
  5. after_main钩子被调用

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
图像处理Java 8 ImageIO在Linux中无法正确读取JPEG   spring如何用Java 1.4兼容版本替换@Resource注释   java Http请求参数类型传播   在web浏览器中看不到Java Maven Tomcatplugin web应用程序   jvm在Java中使用直接内存的目的是什么?   如何从列表转换为字符串java   java setAdapter gridview发送上下文   SwingJava。方法上的lang.NullPointerException   java什么是shell脚本、makefile和ant文件   当使用getGraphics()方法时,java JPanel图形会闪烁   java如何将迭代转换为递归?   java为什么我的抽屉菜单在同一个XML上有ConstraintLayout时没有响应?   java如何在图像上画一个圆?   Android studio:Rabbitmq:Error:java。lang.ClassNotFoundException:类io。千分尺。果心仪器找不到仪表注册表