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()
|