blob: e4bf0b839a879f3aa86416774b8d21c7115be392 (
plain)
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
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import os
import argparse
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + '/../build/src')
import libamunmt as nmt
from bottle import request, Bottle, abort
app = Bottle()
@app.route('/translate')
def handle_websocket():
wsock = request.environ.get('wsgi.websocket')
if not wsock:
abort(400, 'Expected WebSocket request.')
while True:
try:
message = wsock.receive()
#print message
if message is not None:
listSentences = message.split('\n')
numEle = len(listSentences)
#print numEle
if numEle > 0 and listSentences[numEle - 1] == "":
#print "deleting"
del listSentences[numEle - 1]
trans = nmt.translate(listSentences)
wsock.send('\n'.join(trans))
except WebSocketError:
break
def parse_args():
""" parse command arguments """
parser = argparse.ArgumentParser()
parser.add_argument("-c", dest="config")
parser.add_argument('-p', dest="port", default=8080, type=int)
return parser.parse_args()
if __name__ == "__main__":
args = parse_args()
nmt.init("-c {}".format(args.config))
from gevent.pywsgi import WSGIServer
from geventwebsocket import WebSocketError
from geventwebsocket.handler import WebSocketHandler
server = WSGIServer(("0.0.0.0", args.port), app,
handler_class=WebSocketHandler)
server.serve_forever()
|