添加通用中间件的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 ADB设备不显示手机、og droid   java使用存储和保存方法写入属性文件   java为什么要打印这个结果   JavaSpring自动连线和并行流   java如何在Hashmap中存储KStream对象类型的值?   Android中Telugu字符串的java正则表达式?   java平方求幂   Eclipse和Tomcat的java错误   Java数组不继续循环   Jsoup未解析java嵌套html   java Android:如何知道MediaPlayer是否暂停?   跟踪Java POJO类中字段的空值集的最佳方法   java Spring在应用程序属性相对与绝对中配置工作目录?   向固定大小的平面添加随机放置的直线矩形的java方法   JavaEclipse和jasper报告:如何定位log4j。财产?