增加集群状态支持

This commit is contained in:
Jalin
2019-01-14 16:06:27 +08:00
parent 01cf6cca33
commit c8988cd214
9 changed files with 82 additions and 17 deletions

View File

@@ -30,7 +30,7 @@ class OrderLog(BaseLog):
MESSAGE_QUERY_ORDER_WAIT_TIME_INFO = '{} 次排队,请耐心等待'
MESSAGE_ORDER_SUCCESS_NOTIFICATION_TITLE = '车票购买成功!'
MESSAGE_ORDER_SUCCESS_NOTIFICATION_CONTENT = '请及时登录12306打开 \'未完成订单\'在30分钟内完成支付!'
MESSAGE_ORDER_SUCCESS_NOTIFICATION_CONTENT = '请及时登录12306打开 \'未完成订单\'在30分钟内完成支付!'
MESSAGE_ORDER_SUCCESS_NOTIFICATION_OF_VOICE_CODE_START_SEND = '正在发送语音通知, 第 {}'
MESSAGE_ORDER_SUCCESS_NOTIFICATION_OF_VOICE_CODE_CONTENT = '你的车票 {}{} 购买成功,请登录 12306 进行支付'

View File

@@ -29,6 +29,7 @@ class UserJob:
user_loaded = False # 用户是否已加载成功
passengers = []
retry_time = 3
login_num = 0 # 尝试登录次数
# Init page
global_repeat_submit_token = None
@@ -101,9 +102,9 @@ class UserJob:
return self.last_heartbeat
def set_last_heartbeat(self):
def set_last_heartbeat(self, time=None):
if Config().is_cluster_enabled():
return self.cluster.session.set(Cluster.KEY_USER_LAST_HEARTBEAT, time_int())
return self.cluster.session.set(Cluster.KEY_USER_LAST_HEARTBEAT, time if time != None else time_int())
self.last_heartbeat = time_int()
# def init_cookies
@@ -184,6 +185,7 @@ class UserJob:
用户登录成功
:return:
"""
self.login_num += 1
self.welcome_user()
self.save_user()
self.get_user_info()
@@ -222,6 +224,7 @@ class UserJob:
self.user_did_load()
else:
UserLog.add_quick_log(UserLog.MESSAGE_LOADED_USER_BUT_EXPIRED).flush()
self.set_last_heartbeat(0)
def user_did_load(self):
"""

View File

@@ -27,3 +27,25 @@ def dashboard():
'user_job_count': user_job_count,
'query_count': query_count
})
@stat.route('/stat/cluster', methods=['GET'])
@jwt_required
def clusters():
"""
节点统计
节点数量,主节点,子节点列表
:return:
"""
from py12306.cluster.cluster import Cluster
nodes = Cluster().nodes
count = len(nodes)
node_lists = list(nodes)
master = [key for key, val in nodes.items() if int(val) == Cluster.KEY_MASTER]
master = master[0] if master else ''
return jsonify({
'master': master,
'count': count,
'node_lists': ', '.join(node_lists)
})

View File

@@ -49,6 +49,7 @@ def user_info():
}
return jsonify(result)
def convert_job_to_info(job: UserJob):
return {
'key': job.key,
@@ -56,5 +57,6 @@ def convert_job_to_info(job: UserJob):
'name': job.get_name(),
'is_ready': job.is_ready,
'is_loaded': job.user_loaded, # 是否成功加载 ready 是当前是否可用
'last_heartbeat': timestamp_to_time(job.last_heartbeat)
'last_heartbeat': timestamp_to_time(job.last_heartbeat),
'login_num': job.login_num
}

View File

File diff suppressed because one or more lines are too long

View File

@@ -1,3 +1,3 @@
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>py12306 购票助手</title><link href=../../static/css/app.dfb5ffed622907edd7c5f81709f2b782.css rel=stylesheet></head><body><script>window.config = {
API_BASE_URL: 'http://localhost:8080/',
}</script><div id=app></div><script type=text/javascript src=../../static/js/manifest.82f431004cf9bb6ad2cb.js></script><script type=text/javascript src=../../static/js/vendor.aebd1de04bf90e88d9c7.js></script><script type=text/javascript src=../../static/js/app.96ef02c9e5601eb5ebcb.js></script></body></html>
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><title>py12306 购票助手</title><link href=../../static/css/app.35e2fbd94557d71d1e2bfa0d4bb44d13.css rel=stylesheet></head><body><script>window.config = {
API_BASE_URL: 'http://localhost:8008/',
}</script><div id=app></div><script type=text/javascript src=../../static/js/manifest.82f431004cf9bb6ad2cb.js></script><script type=text/javascript src=../../static/js/vendor.aebd1de04bf90e88d9c7.js></script><script type=text/javascript src=../../static/js/app.7d7d65cccfbfa339beba.js></script></body></html>

View File

File diff suppressed because one or more lines are too long