Welcome to mirror list, hosted at ThFree Co, Russian Federation.

amunmt_server.py « scripts - github.com/marian-nmt/marian.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 924a948208343fba35bd9740b4ec6375ef7b4ab5 (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')
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()