如何使用装饰器访问请求和响应?

时间:2020-12-23 20:39:03

标签: python flask

我想编写一个自定义装饰器来从端点获取指标,有没有办法让我访问请求以及来自装饰器的响应?如果不是我应该怎么做。

我想查看请求,以便我可以将其记录下来以供稍后分析,然后我需要查看响应以确定它是哪种类型的响应。下面是我的代码。这个想法是我可以访问内部调用的 func 来获取请求。

代码:

def metric(func):
    def inner(*args, **kwargs):
        print("*" * 30)
        start = time.process_time()
        func(*args, **kwargs)
        latency = start - time.process_time()
        print(func)
        print("*" * 30)
        print(latency)

    return inner




@metric
@app.route('/test', methods=['GET', 'POST'])
def printer():
    req = request.get_json()
    return req

1 个答案:

答案 0 :(得分:0)

您是否正在尝试按照以下方式做某事:

from contextlib import contextmanager
from timeit import default_timer

@contextmanager
def ProcessTimer():
    start = default_timer()
    elapser = lambda: default_timer() - start
    yield lambda: elapser()
    end = default_timer()
    elapser = lambda: end-start

然后像下面这样使用它:

with ProcessTimer() as elapsed:
    # . . . . . . Code Under Test . . . . . . . . 
    # - - - Do something here that you want to time - - - 
    # . . . . . . . . . . . . . . . . . . . . . . 
print(f'Solution: derived in {elapsed():.8f} seconds')