def api(): r = request data = r.data z = np.fromstring(data, dtype=np.float64).reshape((1, 100)) output_data = get_model_api(z) data_path = hashlib.sha256(output_data.tostring()).hexdigest() + '.png' scipy.misc.imsave('img/{}'.format(data_path), output_data[0, :, :, :]) return send_file(os.path.join('img', data_path), mimetype='image/png')
def upload(): if "file" not in request.files: return "No file found!" file = request.files["file"] print(file) file.save(file.filename) global algorithm global simExperiment simExperiment, algorithm = get_model_api(file) return "File Uploaded successfully!"
def predict_api(): """API function that recevies forms input and sends predictions to frontend """ if request.method == 'GET': # Show the upload form. return render_template('simple_client.html') pdf_file = request.files['pdf_file'] modelPath = request.form['dname'] if pdf_file.filename == '': return '''No file selected.<a href="/predict">Click here to go back.</a>''' elif modelPath == '': return '''No model selected.<a href="/predict">Click here to go back.</a>''' try: model = request.form['model'] except: return '''No model selected.<a href="/predict">Click here to go back.</a>''' model_dir = modelPath + model filename = secure_filename(pdf_file.filename) abs_fpath = filename session['currentFile'] = filename session['modelDirectory'] = model_dir pdf_file.save(abs_fpath) app.logger.info("api_input: " + str(model_dir)) model_api = serve.get_model_api(model_dir, abs_fpath) os.remove(abs_fpath) if (len(model_api) == 0): return '''Not Supported.<a href="/predict">Click here to go back.</a>''' else: return model_api[0].to_json(orient='records', lines=True) + '''
parser = optparse.OptionParser() parser.add_option('-m', '--model', default=os.path.join('pretrained', 'baseline'), help='path/name of the pretrained model to use (default: pretrained/baseline), the conll2003 pretrained model') parser.add_option('-l', '--language', default='fr', help='Spacy language model for tokenizer (default: en)') option, args = parser.parse_args() modelpath = option.model LANGUAGE = option.language path2xpt = modelpath+'.xpt' path2model = modelpath+'.model' # define the app app = Flask(__name__) CORS(app) # cross-domain requests, allow everything by default # loading model once and for all the api model_api = get_model_api(path2xpt, path2model) # loading tokenizer once and for all for the api print('Loading spacy tokenizer in '+ LANGUAGE+'....') tokenizer = myTokenizer(LANGUAGE) #STATUS = 'live' # live/file # API live demo route @app.route('/api', methods=['POST']) def api(): input_data = request.json app.logger.info('api_input: ' + str(input_data)) input_client, output_client = model_api(input_data, tokenizer = tokenizer) app.logger.info('api_output: ' + str(output_client)) response = jsonify(input= input_client, output = output_client)
#coding:utf-8 from flask import Flask, request, jsonify from flask_restful import Api, Resource, reqparse from serve import get_model_api # define the app app = Flask(__name__) # 先绑定一个api,进行初始化操作 api = Api(app) model_api = get_model_api() class NerView(Resource): def post(self): parser = reqparse.RequestParser() # reqparse 是一个类似于WTforms验证的一个模板,用这个模板的时候,需要先进行引用,然后和WTForms的功能就差不了,就是一个验证用户输入的功能。 parser.add_argument( 'input_conll', type=str, help='please input the conll string for entity recognition!', required=True) # 定义一个username,说明用户需要传入关于username的一个值()后面的都是参数.括号里面的参数可以先不考虑 args = parser.parse_args() # 对用户传入的参数进行解析,不解析的话,是会报错的 input_conll = args['input_conll'] output_conll = model_api(input_conll) return {"output_conll": output_conll}
import os import sys import logging from flask import Flask, request, jsonify from flask_cors import CORS from serve import get_model_api app = Flask(__name__) CORS(app) # Initialise model object model_api = get_model_api(sys.argv[1]) @app.route('/api', methods=['POST']) def api(): # Data from the API POST request will be request.json input_data = request.json app.logger.info('api_input: ' + str(input_data)) # Feeding input data to output output_data = model_api(input_data) app.logger.info('api_output: ' + str(output_data)) response = jsonify(output_data) return response @app.route('/') def index(): return 'It Works!'