繁体   English   中英

为什么这个装饰器被这么多次调用?

[英]Why is this decorator being called so many times?

我有以下装饰器:

@acceptable_methods('POST')
def deposit_funds(request, user=None):
    # do something

这是装饰器代码:

def acceptable_methods(*args):
    """
    Enforce that the necessary method has been called.

    """
    valid_methods = args
    print '11111'

    def _method_wrapper(view_function):
        print '22222'

        def _arguments_wrapper(*args, **kwargs):
            print '33333'
            if args[0].META.get('REQUEST_METHOD') not in valid_methods:
                return JsonRestResponse(None, success=False, error="This is not an acceptable method", status_code=FORBIDDEN_METHOD)
            return view_function(*args, **kwargs)

        return _arguments_wrapper

    return _method_wrapper

由于某些非常强烈的原因,两个外部包装程序似乎都运行了16次。 这是打印语句:

[21/Nov/2014 16:26:57] "POST /api/v1.0/bonuses/grant HTTP/1.1" 500 124805
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
11111
22222
[21/Nov/2014 16:27:13] "POST /api/v1.0/bonuses/grant HTTP/1.1" 500 66364

每个打印语句具有相同的os.pid() 为什么会这样呢? 为什么根本不调用最里面的方法?

您的WSGI服务器创建了16个子进程,并且每个Python都在单独运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM