У меня есть модель keras, которую я хочу использовать для членов команды через API Flask.Эта модель принимает файл .json в качестве входных данных, а также позволяет взвешивать определенные части входных данных, а также сколько их весить.Я хочу, чтобы все участники, запрашивающие эту модель, могли отправлять файл .json, а также аргументы о том, какие части они хотят взвешивать.
Я нахожусь на Mac OS и использую Python 3. Я могу заставить это работать, отправляя ТОЛЬКО файл .json в запросе POST и жестко кодируя аргументы
curl -F 'json=@json_file.json' http://127.0.0.1:5000/model
иотправив ТОЛЬКО веса в GET-запросе и жестко закодировав json
curl -X GET http://127.0.0.1:5000/ -d weight_col='Birth Year' -d weights=10
, но я не могу заставить их работать как один запрос.
Ниже приведено мое приложение флягикод -
app = Flask(__name__)
api = Api(app)
parser = reqparse.RequestParser()
parser.add_argument('weight_cols', action='append', location='form')
parser.add_argument('weights', action='append', location='form')
class Cluster(Resource):
def post(self):
req = json.load(request.files['json'])
args = parser.parse_args()
weight_cols = args['weight_cols']
weights = args['weights']
cd = ClusterData(json = req)
cd.gen_df()
cd.create_array(weight_cols = weight_cols, weight_amt=weights)
output = cd.cluster_match()
return output
api.add_resource(Cluster, '/cluster')
if __name__ == "__main__":
app.run(debug=True)
Я ожидаю, что модель запустится, но я получаю различные сообщения об ошибках в зависимости от того, как я отправляю запрос curl.Если я отправляю его как
curl -F 'json=@john_davidson.json' http://127.0.0.1:5000/cluster -f weight_cols='Birth Year' -f weights=10
, я получаю следующую ошибку
curl: (22) The requested URL returned error: 500 INTERNAL SERVER ERROR
curl: (6) Could not resolve host: weight_cols=Birth Year
curl: (6) Could not resolve host: weights=10
Я попытался отправить аргументы с префиксом -d, но затем я получил ошибку при использовании как -F, так ив то же время.
Я также пытался добавить слово POST в это, но оно либо говорит мне, что подразумевается POST, либо дает то же самое. Не удалось разрешить сообщение host: POST.
Есть ли способ сделать это?Я никогда не использовал Flask, прежде чем пытаться это сделать, но я изучил документацию для Flask RESTful и до сих пор не понимаю, как заставить это работать.
Спасибо.