-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstartAPI.py
63 lines (51 loc) · 1.85 KB
/
startAPI.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python
import configargparse
import json
import re
import os
from onmt.translate import TranslationServer, ServerModelError
from flask import Flask, jsonify, request
from mtServerClass import *
STATUS_OK = "ok"
STATUS_ERROR = "error"
def start(config_file,
host="0.0.0.0",
port=5000,
debug=True):
"""
Starting flask API server for mtSystem.
input: [{"src": "Input sentence here", "id":modelID}]
src: sentence in source language
id: informs translate in which language, using which particular model
output: {"src": "normalized and tokenized input sentence",
"tgt": "translated sentence in target language",
"error": "Error Occurred if any." }
"""
app = Flask(__name__,)
mtSystem = translationPipeline('wordNltk','sentNltk',config_file)
@app.route('/translate', methods=['POST'])
def translate():
inputData = request.get_json()
preprocessedData, modelID, inputError = mtSystem.preprocessingInput(inputData)
if inputError == "None":
output = mtSystem.translate(preprocessedData, modelID)
else:
output = {"src":"\n".join([sentence for sentence in preprocessedData]), "tgt":""}
output["error"] = inputError
output["src"] = inputData[0]["src"]
return jsonify(output)
app.run(debug=debug, host=host, port=port, use_reloader=False,
threaded=True)
def _get_parser():
parser = configargparse.ArgumentParser(
config_file_parser_class=configargparse.YAMLConfigFileParser,
description="NMT RestAPI Server")
parser.add_argument("--ip", type=str, default="0.0.0.0")
parser.add_argument("--port", type=int, default="5000")
parser.add_argument("--debug", "-d", action="store_true")
parser.add_argument("--config", "-c", type=str,default=".mtConf.json")
return parser
if __name__ == '__main__':
parser = _get_parser()
args = parser.parse_args()
start(args.config, host=args.ip, port=args.port,debug=args.debug)