Estou desenvolvendo uma aplicação que faz predições a partir de modelos, e queria implementar uma funcionalidade que me permita criar novas rotas através de uma função.
config = json.loads(open('config.json').read()) def create_models(config): for key, val in config.items(): globals()[key] = initialize_model(val) @app.route('/predict1', methods=['GET', 'POST']) def predict1(): if request.method == 'POST': try: information= request.data except Exception as e: print(e) return abort(400, e) try: results_inventory = predict1.pred(information) inventory = set_inventory(results_inventory) return jsonify(inventory) except Exception as e: print(e) return abort(500, e)
Tudo está funcionando conforme desejado, config
carrega meu json com as informações necessárias, create_models
carrega meus modelos, predict1
recebe as informações e devolve os resultados da analíse.
Acontece que tenho mais de um modelo e queria disponibilizar uma nova rota para cada um deles, aqui um exemplo do meu config.json
{ "predict1": { "model": "cfg/configurationfile1.txt", "load": 115, "threshold": 0.25, }, "predict2": { "model": "cfg/configurationfile2.txt", "load": 600, "threshold": 0.10, } }
Como tenho dois modelos dentro do meu config.json, precisei criar uma nova rota manualmente, que é identica a primeira alterando apenas os locais do código onde aparecem ‘predict1’ para ‘predict2’, ficou assim:
@app.route('/predict1', methods=['GET', 'POST']) def predict1(): if request.method == 'POST': try: information= request.data except Exception as e: print(e) return abort(400, e) try: results_inventory = predict1.pred(information) inventory = set_inventory(results_inventory) return jsonify(inventory) except Exception as e: print(e) return abort(500, e) @app.route('/predict2', methods=['GET', 'POST']) def predict2(): if request.method == 'POST': try: information= request.data except Exception as e: print(e) return abort(400, e) try: results_inventory = predict2.pred(information) inventory = set_inventory(results_inventory) return jsonify(inventory) except Exception as e: print(e) return abort(500, e)
Existe uma maneira de automatizar esse processo de criação de rotas, para que o próprio script gere uma nova rota sempre que uma nova configuração aparecer no meu json ?