У меня есть следующий декоратор:Почему этот декоратор называется так много раз?
@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 * загружает процессы? Вы настроили его для загрузки нескольких процессов для обработки нагрузки? –
Вы должны печатать на stderr, а не на stdout, чтобы журнал мог работать правильно (и чтобы вы не взорвали такие вещи, как mod_wsgi после). –