-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.py
65 lines (54 loc) · 1.92 KB
/
server.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
64
#!/usr/bin/env python3
# Software License Agreement (BSD License)
#
# Copyright (c) 2018, Vinman, Inc.
# All rights reserved.
#
# Author: Vinman <vinman.cub@gmail.com>
import os
import sys
import argparse
import tornado
from tornado import ioloop
from tornado import web
from tornado import httpserver
from handlers.websocket import WebSocketHandler
from handlers.http import VueHandler
from common import loop
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--address', type=str, default='0.0.0.0', help='server listen address')
parser.add_argument('--port', type=int, default=10086, help='server listen port')
parser.add_argument('--num_processes', type=int, default=-1, help='fork process to support')
args = parser.parse_args()
template_path = os.path.join(os.path.dirname(__file__), 'templates')
static_path = os.path.join(os.path.dirname(__file__), 'static')
settings = {
'template_path': template_path,
'static_path': static_path
}
handlers = [
(r'/ws', WebSocketHandler),
(r'/', VueHandler),
]
# app = web.Application(handlers, **settings, autoreload=True)
app = web.Application(handlers, **settings)
if args.num_processes >= 0:
try:
http_server = httpserver.HTTPServer(app)
http_server.bind(args.port, args.address)
http_server.start(num_processes=args.num_processes)
except:
app.listen(args.port, address=args.address)
else:
app.listen(args.port, address=args.address)
print('server listen on {}:{}'.format(args.address, args.port))
pid = os.getpid()
ppid = os.getppid()
print('server process pid: {}, ppid: {}'.format(pid, ppid))
main_ioloop = ioloop.IOLoop.instance()
main_ioloop.add_timeout(1, loop.process_req_loop)
main_ioloop.add_timeout(1, loop.process_res_loop)
main_ioloop.start()
if __name__ == '__main__':
main()