添加通用中间件的python模块
middleware的Python项目详细描述
版权所有(c)2016大卫贝茨
兼容性
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()