handel-server 1.04 KB
Newer Older
Vincent Michel's avatar
Vincent Michel committed
1
2
3
4
5
6
7
8
9
#!/usr/bin/env python3

"""Serve the handel interface over the network using zerorpc.

This requires python3, handel, zerorpc and msgpack_numpy.

Usage:

    $ ./handel-server 8888
Vincent Michel's avatar
Vincent Michel committed
10
    Serving handel on tcp://0.0.0.0:8888 ...
Vincent Michel's avatar
Vincent Michel committed
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

Test on the client machine using:

    $ zerorpc tcp://hostname:8888 -?
"""

# Imports

import sys

import zerorpc
import msgpack_numpy

import handel.interface as hi


# Patching

msgpack_numpy.patch()


# Run server

def run(bind='0.0.0.0', port=8000):
    access = "tcp://{}:{}".format(bind, port)
    try:
        hi.init_handel()
        server = zerorpc.Server(hi)
        server.bind(access)
Vincent Michel's avatar
Vincent Michel committed
40
        print('Serving handel on {} ...'.format(access))
Vincent Michel's avatar
Vincent Michel committed
41
42
43
44
45
46
47
48
49
50
        try:
            server.run()
        except KeyboardInterrupt:
            print('Interrupted.')
        finally:
            server.close()
    finally:
        hi.exit()


Vincent Michel's avatar
Vincent Michel committed
51
# Main function
Vincent Michel's avatar
Vincent Michel committed
52
53
54
55
56
57
58
59
60
61
62
63

def main(args=None):
    if args is None:
        args = sys.argv
    if len(args) > 1:
        run(port=int(args[1]))
    else:
        run()


if __name__ == '__main__':
    main()