将参数传递给要在事件挂钩中执行的函数内使用的端点

时间:2019-06-18 13:03:47

标签: python events hook endpoint eve

我有一个函数可以在名为"cnt_id"的mongodb集合上执行。我的功能效果很好:

tab0001

但是,我想添加一个参数“ n”也是my_func(response,n)的参数,但是n的值由客户端使用url端点给出。没有参数n,我通过以下方式访问函数:

from eve import Eve def my_func(response): resposta = pd.DataFrame.from_dict(response['_items']) resposta = resposta.drop(columns = ['_id','var0030','var0053','var0052','var0058', 'var0057', 'var0028', 'var0029', 'var0059','_created', '_updated', '_etag', '_links']) resposta = resposta.groupby('var0046', as_index=False).sum() num_emp_total = sum(resposta['var0055']) massa_sal_total = sum(resposta['var0054']) mercado_num_emp = sum(((resposta['var0055']/num_emp_total) ** 2 ) * 10000) mercado_massa_sal = sum(((resposta['var0054']/massa_sal_total) ** 2 ) * 10000) response.clear() response['ind0063'] = mercado_massa_sal response['ind0062'] = mercado_num_emp app = Eve() app.on_fetched_resource_func += my_func app.run()

如果我想在执行my_func之前对集合"127.0.0.1:2000/func"进行过滤,我会这样做:

示例:tab0001,它将在2016年之前过滤数据并正确执行my_func!

但是,在这种情况下,我还需要允许客户端选择将在函数内使用的值"127.0.0.1:2000/func?where{"var0059":2016}"。在集合的不同过滤器中,不同的n值会返回不同的结果。

因此,我已经对发布请求事件挂钩进行了调查,但是我还没有想出如何适应我的问题(还有settings.py文件)。在我看来,URL终结点类似于:

n

我的settings.py就像:

"127.0.0.1:2000/func?where{"var0059":2016}&n=5"

1 个答案:

答案 0 :(得分:1)

Eve建立在Flask之上。您可以通过请求代理 访问Flask's request context

from flask import request

def my_func(response):
    ...
    # here we want to get the value of n (e.g. ?n=some-value)
    n = request.args.get('n')