Я пытаюсь создать декоратор с аргументами и использовать его вместе с модулем фляги.
def ios_network_access(arg): #TODO:
def real_ios_network_access_decorator(fn):
def ios_network_access_inner():
if not request.json:
print("aborting because not json", fn.__name__)
abort(400)
try:
print("check args", arg)
return fn()
except Exception as e:
print("the following error occurred in:", fn.__name__)
print(request.json)
print(str(e))
print("---------------------------------")
abort(503)
return real_ios_network_access_decorator
@app.route("/someurl")
@ios_network_access("some argument")
def some_function_for_url():
pass
Однако, потому что фляга использует имена функций в их декораторе (фляга требует уникальности имен функций идекоратор маскирует его), мои конечные точки не создаются.
Здесь очень похожий вопрос, который задает непараметрические декораторы;однако из-за дополнительного функционального слоя этот вопрос отличается.См. AssertionError: При отображении функции View перезаписывается существующая функция конечной точки: main
Есть мысли о том, как передать аргумент в декоратор с помощью qwerks колбы?