我有以下装饰:为什么这个装饰器被多次调用?
@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应用程序吗?你检查过你的WSGI *服务器*加载过程吗?你有没有设置它来加载多个进程来处理负载? – 2014-11-21 16:29:42
你应该打印到stderr而不是stdout,以便日志记录可以正常工作(并且不会像以后那样炸毁诸如mod_wsgi之类的东西)。 – 2014-11-21 16:29:50