我有以下装饰者:
@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
每个print语句都具有相同的os.pid()
。
为什么会这样?为什么根本不调用最内层的方法?
答案 0 :(得分:3)
您的WSGI服务器创建了16个子进程,并且每个进程都单独运行Python。