添加通用中间件的python模块

middleware的Python项目详细描述


版权所有(c)2016大卫贝茨

安装

pip install middleware

Build StatusPyPI version

兼容性

python 2和3

目的

大多数人都需要中间件的概念。

下面是使用此方法的示例,请参见test_middleware.py 完整的例子。

class AdditionMiddleware1(Middleware):
    def create(self):
        def func(mwa, context):
            try:
                counter = context['counter']
            except:
                counter = 0
            context['counter'] = counter + 1

            return next(mwa)

        return func

使用类时,添加一个返回函数的create函数。 这个内部功能接受中间件数组和数据上下文 返回next(mwa)以创建中间件链。

对于本例,我将再添加两个:

class AdditionMiddleware2(AdditionMiddleware1):
    pass


class AdditionMiddleware3(AdditionMiddleware2):
    pass

现在开始运行它。使用set设置中间件数组,并将add设置为 向数组中添加一个。set覆盖所有内容。就是这样 set表示。

handler = Handler()
handler.set([AdditionMiddleware1, AdditionMiddleware2])
handler.add(AdditionMiddleware3)
handler.execute()

# handler['counter'] == 3

在本例中,没有初始上下文,三个 中间件增加以handler['counter'] == 3结尾的计数器。

你也可以跳过全班的内容:

handler = Handler()
def inline(wma, context):
    context['myvalue'] = 12
handler.add(inline)
handler.execute()
# handler['myvalue'] == 12

使用以下命令发送初始上下文:

handler = Handler(counter=1)

它实际上是kwargs,所以您可以加载它:

handler = Handler(**{'a': 1, 'b': 2})
def inline(wma, context):
    context['a'] = context['a'] + context['b']
handler.add(inline)
handler.execute()

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

推荐PyPI第三方库


热门话题
如何下载多个。java中的PDF文件   linux Java打开文件,形成实际用户主页~/   java如何在时间线内维护TableView选择?   java Hibernate注释@Where vs@WhereJoinTable   Java读/写访问异常FileNotFoundException(访问被拒绝)   继承在Java中是否可以扩展最后一个类?   Android HttpClient使用java使应用程序崩溃。lang.OutOfMemoryError:pthread_create   java为什么即使我在proguardproject中添加了jar文件,也会出现这种错误。txt?   如果添加JButton,swing Java FocusListener和KeyListener将无法工作   java使用solrj检索json格式的SolrDocument   使用Microsoft Visual Studio代码进行Java编程   java NoClassDefFoundError:org/apache/log4j/Logger   哈希集中包含相等对象的java   java中的参数化构造函数是否需要有一个主体?   java类似于NetBeans不必要的代码检测器   Java实践问题   java Blackberry“[projectname].调试文件丢失”和“I/O错误:找不到程序”jar