def inject_json_data(request): """ 内部content json """ logger.debug('endpoint: %s, box: %s', request.endpoint, request.box) # 先赋值None request.json_data = None json_body = request.box.get_json() if not json_body: return data = json_body.get('data') sign = json_body.get('sign') calc_sign = hashlib.md5('|'.join( [current_app.config['SECRET_KEY'], data])).hexdigest() if calc_sign != sign: logger.error('sign not equal. sign: %s, calc_sign: %s', sign, calc_sign) return request.json_data = json.loads(data)
def client_conn_closed(request): """ 当客户端链接断掉的时候 :param request: :return: """ if current_app.config['REDIS_ONLINE_SAVE'] and request.gw_box.uid > 0: # 有效 try: remove_redis_online(request.gw_box.uid, request.gw_box.userdata) except: logger.error('exc occur. request: %s', request, exc_info=True)
def client_conn_closed(request): """ 当客户端链接断掉的时候 :param request: :return: """ if current_app.config["REDIS_ONLINE_SAVE"] and request.gw_box.uid > 0: # 有效 try: remove_redis_online(request.gw_box.uid, request.gw_box.userdata) except: logger.error("exc occur. request: %s", request, exc_info=True)
def heartbeat(request): """ 心跳 :param request: :return: """ logger.debug("uid: %s, userdata: %s", request.gw_box.uid, request.gw_box.userdata) if current_app.config["REDIS_ONLINE_SAVE"]: # 有效 try: save_redis_online(request.gw_box.uid, request.gw_box.userdata) except: logger.error("exc occur. request: %s", request, exc_info=True) request.write_to_client(dict(ret=0))
def heartbeat(request): """ 心跳 :param request: :return: """ logger.debug('uid: %s, userdata: %s', request.gw_box.uid, request.gw_box.userdata) if current_app.config['REDIS_ONLINE_SAVE']: # 有效 try: save_redis_online(request.gw_box.uid, request.gw_box.userdata) except: logger.error('exc occur. request: %s', request, exc_info=True) request.write_to_client(dict( ret=0 ))
def login(request): """ 登录 :param request: :return: """ user_table = kit.mongo_client.get_default_database()[current_app.config['MONGO_TB_USER']] user = user_table.find_one({ 'uid': request.json_data['uid'], 'key': request.json_data['key'], }) if not user: request.write_to_client(dict( ret=proto.RET_NO_DATA )) return # 因为现在注册永远是第一步,所以不需要再在login的时候做更新了 # 只有部分数据要更新,其他的就按照注册的时候来 # user_table.update({ # '_id': user['_id'], # }, { # '$set': dict( # os=request.json_data.get('os'), # os_version=request.json_data.get('os_version'), # sdk_version=request.json_data.get('sdk_version'), # ) # }) # 放appid的原因是,心跳的时候可以直接取到appid,这样写入redis的时候就方便多了 request.login_client(user['uid'], user['appid']) if current_app.config['REDIS_ONLINE_SAVE']: # 有效 try: save_redis_online(user['uid'], user['appid']) except: logger.error('exc occur. request: %s', request, exc_info=True) request.write_to_client(dict( ret=0 ))
def login(request): """ 登录 :param request: :return: """ user_table = kit.mongo_client.get_default_database()[current_app.config["MONGO_TB_USER"]] user = user_table.find_one({"uid": request.json_data["uid"], "key": request.json_data["key"]}) if not user: request.write_to_client(dict(ret=proto.RET_NO_DATA)) return # 因为现在注册永远是第一步,所以不需要再在login的时候做更新了 # 只有部分数据要更新,其他的就按照注册的时候来 # user_table.update({ # '_id': user['_id'], # }, { # '$set': dict( # os=request.json_data.get('os'), # os_version=request.json_data.get('os_version'), # sdk_version=request.json_data.get('sdk_version'), # ) # }) # 放appid的原因是,心跳的时候可以直接取到appid,这样写入redis的时候就方便多了 request.login_client(user["uid"], user["appid"]) if current_app.config["REDIS_ONLINE_SAVE"]: # 有效 try: save_redis_online(user["uid"], user["appid"]) except: logger.error("exc occur. request: %s", request, exc_info=True) request.write_to_client(dict(ret=0))
def inject_json_data(request): """ 内部content json """ logger.debug("endpoint: %s, box: %s", request.endpoint, request.box) # 先赋值None request.json_data = None json_body = request.box.get_json() if not json_body: return data = json_body.get("data") sign = json_body.get("sign") calc_sign = hashlib.md5("|".join([current_app.config["SECRET_KEY"], data])).hexdigest() if calc_sign != sign: logger.error("sign not equal. sign: %s, calc_sign: %s", sign, calc_sign) return request.json_data = json.loads(data)
def send_alarm(request): """ 发送警报 """ data = request.REQUEST.get('data') sign = request.REQUEST.get('sign') if not data or not sign: return jsonify( ret=-1, error=u'参数错误', ) calc_sign = hashlib.md5('|'.join([settings.ALARM_SECRET, data])).hexdigest() if calc_sign != sign: return jsonify(ret=-2, error=u'签名错误') json_data = json.loads(data) try: config = Config.objects.get(pk=json_data['config_id']) except Config.DoesNotExist: return jsonify(ret=-3, error=u'config不存在') except: logger.error('exc occur.', exc_info=True) return jsonify(ret=-4, error=u'未知错误') alarm = Alarm() alarm.config = config alarm.number_value = json_data['number_value'] alarm.slope_value = json_data['slope_value'] alarm.delta_value = json_data['delta_value'] alarm.notified = False # 先保存起来,说明还没有邮件通知 alarm.save() flylog_role_list = [role.flylog_id for role in config.roles.all()] content = u'统计项: %s\n' % config.stat_name if json_data['number_value'] is not None: # 说明是相关的 content += u'值类型: %s %s %s\n' % ( json_data['number_value'], config.number_cmp, config.number_value) if json_data['slope_value'] is not None: # 说明是相关的 content += u'波动率: %.02f%% %s %.02f%%\n' % (json_data['slope_value'] * 100, config.slope_cmp, config.slope_value * 100) if json_data['delta_value'] is not None: content += u'差值: %s %s %s\n' % (json_data['delta_value'], config.delta_cmp, config.delta_value) logger.info('data: %s, content: %s', data, content) flylog_client.send(settings.ALARM_SOURCE, content, flylog_role_list) # 设置为已经通知,因为之前是有可能失败的,现在其实已经不知道了 alarm.notified = True alarm.save() return jsonify(ret=0)