55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
|
"""
|
||
|
backend_server.py - 后台服务器
|
||
|
"""
|
||
|
import asyncio
|
||
|
import os
|
||
|
import threading
|
||
|
|
||
|
import aiomysql
|
||
|
import tornado.web
|
||
|
|
||
|
from tornado.ioloop import IOLoop
|
||
|
from tornado.platform.asyncio import AnyThreadEventLoopPolicy
|
||
|
|
||
|
from service.handlers.handlers_for_charts import send_data
|
||
|
from service.handlers.handlers_for_nav import IndexHandler
|
||
|
from service.handlers.handlers_for_tables import EmpHandler
|
||
|
from service.handlers.handlers_for_charts import ChartHandler
|
||
|
|
||
|
|
||
|
async def connect_mysql():
|
||
|
return await aiomysql.connect(
|
||
|
host='120.77.222.217',
|
||
|
port=3306,
|
||
|
db='hrs',
|
||
|
charset='utf8',
|
||
|
use_unicode=True,
|
||
|
user='root',
|
||
|
password='123456',
|
||
|
)
|
||
|
|
||
|
|
||
|
def main():
|
||
|
# Tornado 5开始使用线程必须指定事件循环的策略否则无法启动线程
|
||
|
asyncio.set_event_loop_policy(AnyThreadEventLoopPolicy())
|
||
|
# 启动通过WebSocket长连接发送数据的线程
|
||
|
threading.Thread(target=send_data, daemon=True, args=(5, )).start()
|
||
|
app = tornado.web.Application(
|
||
|
handlers=[
|
||
|
(r'/', IndexHandler),
|
||
|
(r'/api/emps', EmpHandler),
|
||
|
(r'/ws/charts', ChartHandler),
|
||
|
],
|
||
|
template_path=os.path.join(os.path.dirname(__file__), 'templates'),
|
||
|
static_path=os.path.join(os.path.dirname(__file__), 'assets'),
|
||
|
cookie_secret='MWM2MzEyOWFlOWRiOWM2MGMzZThhYTk0ZDNlMDA0OTU=',
|
||
|
mysql=IOLoop.current().run_sync(connect_mysql),
|
||
|
debug=True
|
||
|
)
|
||
|
app.listen(8888)
|
||
|
tornado.ioloop.IOLoop.current().start()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|