-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.py
113 lines (96 loc) · 4.27 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import os
import sys
import logging
import tornado.database
import tornado.httpserver
import tornado.ioloop
import tornado.web
import redis
from tornado.options import options, define
from handlers.pages import *
from handlers.auth import *
from handlers.user import *
from handlers.trainer import *
from handlers.question import *
from handlers.feed import *
from handlers.answer import *
from handlers.search import *
from handlers.recommend import *
import modules.nlp as nlp
PORT = sys.argv[1]
HOST = sys.argv[2]
DB = sys.argv[3]
USER = sys.argv[4]
PASS = sys.argv[5]
REDIS_HOST = sys.argv[6]
REDIS_PORT = 6379
REDIS_DB = 0
define("port", default=PORT, help="run on the given port", type=int)
define("debug", default=False, help="run tornado in debug mode", type=bool)
'''
define("mysql_host", default="localhost:3306", help="host and port mysql is running on")
define("mysql_database", default="fitquo", help="name of the mysql database")
define("mysql_user", default="root", help="name of the mysql user")
define("mysql_password", default="", help="password of the mysql user")
'''
class Application(tornado.web.Application):
"""The main application class for Fitquo"""
def __init__(self):
"""Creates the application with specified settings"""
self.classifier = nlp.get_classifier()
self.db = tornado.database.Connection(
host=HOST, database=DB,
user=USER, password=PASS)
if REDIS_HOST == "local":
self.r_server = redis.StrictRedis(host="localhost", port=REDIS_PORT, db=REDIS_DB)
else:
self.r_server = redis.from_url(REDIS_HOST)
handlers = [
# Page Handlers
tornado.web.URLSpec(r'/', IndexPageHandler),
tornado.web.URLSpec(r'/about', AboutPageHandler),
tornado.web.URLSpec(r'/contact', ContactPageHandler),
tornado.web.URLSpec(r'/profile', ProfilePageHandler),
tornado.web.URLSpec(r'/profile/([0-9]+)', ProfilePageHandler),
tornado.web.URLSpec(r'/pre_signup', PreSignupPageHandler),
tornado.web.URLSpec(r'/user_signup', UserSignupPageHandler),
tornado.web.URLSpec(r'/trainer_signup', TrainerSignupPageHandler),
tornado.web.URLSpec(r'/ask', QuestionPageHandler),
tornado.web.URLSpec(r'/feed', FeedPageHandler),
tornado.web.URLSpec(r'/answers/([0-9]+)', AnswerPageHandler),
tornado.web.URLSpec(r'/search', SearchPageHandler),
tornado.web.URLSpec(r'/recommend', RecommendPageHandler),
# API Handlers
tornado.web.URLSpec(r'/api/user_signup', UserSignupHandler),
tornado.web.URLSpec(r'/api/trainer_signup', TrainerSignupHandler),
tornado.web.URLSpec(r'/api/user', UserInfoHandler),
tornado.web.URLSpec(r'/api/trainer', TrainerInfoHandler),
tornado.web.URLSpec(r'/api/user/([0-9]+)', UserInfoHandler),
tornado.web.URLSpec(r'/api/ask', QuestionHandler),
tornado.web.URLSpec(r'/api/feed', FeedHandler),
tornado.web.URLSpec(r'/api/question/([0-9]+)', QAHandler),
tornado.web.URLSpec(r'/api/answer', AnswerHandler),
tornado.web.URLSpec(r'/api/search', SearchHandler),
tornado.web.URLSpec(r'/api/recommend', RecommendHandler),
tornado.web.URLSpec(r'/api/delete_answer', DeleteAnswerHandler),
tornado.web.URLSpec(r'/login', GoogleLogin),
tornado.web.URLSpec(r'/logout', LogoutHandler)
]
current_dir = os.path.dirname(__file__)
settings = dict(
template_path=os.path.join(current_dir, 'templates'),
static_path=os.path.join(current_dir, 'static'),
module_path=os.path.join(current_dir, 'modules'),
login_url='/login',
debug=options.debug,
autoescape='xhtml_escape',
cookie_secret='947e5d1dc624bc99421bfc7e8ebad245',
xsrf_cookies=True
)
super(Application, self).__init__(handlers, **settings)
logging.info('Server started on port {0}'.format(options.port))
if __name__ == "__main__":
tornado.options.parse_command_line()
http_server = tornado.httpserver.HTTPServer(Application())
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()