У меня есть функция, которая выполняется над коллекцией mongodb, которая называется tab0001
.Моя функция прекрасно работает:
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()
Однако я хотел бы добавить аргумент "n", который также будет аргументом my_func (response, n), но значение n задается клиентом с помощьюконечные точки URL.Без параметра n я получаю доступ к своей функции через:
"127.0.0.1:2000/func"
Если бы я хотел применить фильтр к коллекции tab0001
до выполнения my_func, я бы сделал:
Пример: "127.0.0.1:2000/func?where{"var0059":2016}"
и он фильтрует данные к 2016 году и правильно выполняет my_func!
Однако я также должен иметь возможность разрешить клиенту выбиратьзначение n
, которое будет использоваться внутри функции.Разные значения n в разных фильтрах коллекции возвращают разные результаты.
Итак, я размышлял о перехватах событий после запроса, но я не понял, как приспособиться к моей проблеме (также файл settings.py),На мой взгляд, конечная точка URL будет выглядеть примерно так:
"127.0.0.1:2000/func?where{"var0059":2016}&n=5"
Мой файл settings.py похож на:
MONGO_URI = "mongodb://localhost:27017/portal_db"
tab_schema = {
"schema": {
"var0030":{"type": "integer"},
"var0053":{"type": "integer"},
"var0052":{"type": "integer"},
"var0058":{"type": "integer"},
"var0054":{"type": "integer"},
"var0055":{"type": "integer"},
"var0046":{"type": "string"},
"var0057":{"type": "integer"},
"var0028":{"type": "string"},
"var0029":{"type": "integer"},
"var0059":{"type": "integer"}
}
}
func = {
'datasource': {
'source': 'tab0043'
},
"schema": {
"var0030":{"type": "integer"},
"var0053":{"type": "integer"},
"var0052":{"type": "integer"},
"var0058":{"type": "integer"},
"var0054":{"type": "integer"},
"var0055":{"type": "integer"},
"var0046":{"type": "string"},
"var0057":{"type": "integer"},
"var0028":{"type": "string"},
"var0029":{"type": "integer"},
"var0059":{"type": "integer"}
},
'pagination': False
}
DOMAIN = {
"tab0043": tab_schema,
"func": func
}