__main__.py 3.25 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/python
# -*- coding: utf-8 -*-
#    Copyright 2014 J. Fernando Sánchez Rada - Grupo de Sistemas Inteligentes
#                                                       DIT, UPM
#
#    Licensed under the Apache License, Version 2.0 (the "License");
#    you may not use this file except in compliance with the License.
#    You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.
"""
Senpy is a modular sentiment analysis server. This script runs an instance of
the server.

"""
22

23
from flask import Flask
24
from senpy.extensions import Senpy
25

26
27
28
import logging
import os
import argparse
29
import senpy
30

J. Fernando Sánchez's avatar
J. Fernando Sánchez committed
31
32
SERVER_PORT = os.environ.get("PORT", 5000)

J. Fernando Sánchez's avatar
YAPFed    
J. Fernando Sánchez committed
33

J. Fernando Sánchez's avatar
J. Fernando Sánchez committed
34
def main():
35
    parser = argparse.ArgumentParser(description='Run a Senpy server')
J. Fernando Sánchez's avatar
YAPFed    
J. Fernando Sánchez committed
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
    parser.add_argument(
        '--level',
        '-l',
        metavar='logging_level',
        type=str,
        default="INFO",
        help='Logging level')
    parser.add_argument(
        '--debug',
        '-d',
        action='store_true',
        default=False,
        help='Run the application in debug mode')
    parser.add_argument(
        '--default-plugins',
        action='store_true',
        default=False,
        help='Load the default plugins')
    parser.add_argument(
        '--host',
        type=str,
J. Fernando Sánchez's avatar
J. Fernando Sánchez committed
57
        default="0.0.0.0",
J. Fernando Sánchez's avatar
YAPFed    
J. Fernando Sánchez committed
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
        help='Use 0.0.0.0 to accept requests from any host.')
    parser.add_argument(
        '--port',
        '-p',
        type=int,
        default=SERVER_PORT,
        help='Port to listen on.')
    parser.add_argument(
        '--plugins-folder',
        '-f',
        type=str,
        default='plugins',
        help='Where to look for plugins.')
    parser.add_argument(
        '--only-install',
        '-i',
        action='store_true',
        default=False,
J. Fernando Sánchez's avatar
J. Fernando Sánchez committed
76
        help='Do not run a server, only install plugin dependencies')
77
78
79
80
81
    parser.add_argument(
        '--threaded',
        action='store_false',
        default=True,
        help='Run a threaded server')
82
83
84
85
86
87
    parser.add_argument(
        '--version',
        '-v',
        action='store_true',
        default=False,
        help='Output the senpy version and exit')
88
    args = parser.parse_args()
89
90
91
    if args.version:
        print('Senpy version {}'.format(senpy.__version__))
        exit(1)
92
93
94
    logging.basicConfig()
    rl = logging.getLogger()
    rl.setLevel(getattr(logging, args.level))
95
96
    app = Flask(__name__)
    app.debug = args.debug
97
    sp = Senpy(app, args.plugins_folder, default_plugins=args.default_plugins)
98
99
100
    if args.only_install:
        sp.install_deps()
        return
101
    sp.activate_all()
J. Fernando Sánchez's avatar
J. Fernando Sánchez committed
102
103
104
    print('Senpy version {}'.format(senpy.__version__))
    print('Server running on port %s:%d. Ctrl+C to quit' % (args.host,
                                                            args.port))
105
106
107
108
    app.run(args.host,
            args.port,
            threaded=args.threaded,
            debug=app.debug)
109
    sp.deactivate_all()
J. Fernando Sánchez's avatar
J. Fernando Sánchez committed
110

J. Fernando Sánchez's avatar
YAPFed    
J. Fernando Sánchez committed
111

J. Fernando Sánchez's avatar
J. Fernando Sánchez committed
112
113
if __name__ == '__main__':
    main()