调整日志

This commit is contained in:
pengtao 2019-09-29 17:10:07 +08:00
parent 68466a0824
commit 23f8d14f66

View File

@ -4,143 +4,18 @@ import sys
from flask import Flask, jsonify
from flask_restful import reqparse, abort, Api, Resource
import logging
from myredis.myredis import my_redis
from mysql.mmysql import MysqlBase
from prod_config import mysql_promotion_config
import datetime
import pdb
import json
import copy
import time
from ops.ad_produce import produce_task
log = logging.getLogger(__name__)
parser = reqparse.RequestParser()
parser.add_argument('locationid')
# parser.add_argument('locationid')
class RelushADinfo(Resource):
def __init__(self):
self.args = parser.parse_args()
self.mydb = MysqlBase(**mysql_promotion_config)
self.expired = 60 * 2 * 60
self.remove_list = ('ad_num', 'gameid')
pass
def get(self):
locationid = self.args['locationid']
if locationid:
need_change_keys = set()
key_word = f"ad::*_{locationid}_*::*::{locationid}"
adlists = my_redis.keys(key_word)
if adlists:
for key in adlists:
need_change_keys.update(my_redis.smembers(key))
if need_change_keys:
for one in need_change_keys:
key = f"adinfo::{one}::info"
log.info(f"reflush key={key} set expire!")
my_redis.expire(key, 1)
time.sleep(1)
adid = one.split('_')[0]
locationid = one.split('_')[1]
areas = self._get_areas(locationid)
if areas:
for area in areas:
info = self._get_adinfo(adid)
if info:
info['area'] = area
info['locationid'] = locationid
full_info = self._update_localtion(locationid, info)
for item in self.remove_list:
full_info.pop(item)
my_redis.hmset(key, full_info)
log.info(f"reflush key ={key} with {full_info}")
my_redis.expire(key, self.expired)
return jsonify({'code': 200, 'message': f"reflush key locationid={locationid}!"})
else:
return jsonify({'code': 200, 'message': f"key not found with locationid={locationid}!"})
def _get_areas(self, locationid):
sql = f"SELECT area FROM `location` WHERE id={locationid}"
data = self.mydb.query(sql)
if data:
return data[0][0].replace("[", "").replace("]", "").replace('"', "").split(',')
else:
log.error(f"get area from db failed,location={locationid}!")
return None
def _get_adinfo(self, id):
sql = f"""select
id,
name,
ad_num,
ad_title,
ad_body,
ad_image,
jump_param,
ad_sort,
companyid,
gameid,
channelid,
jump_status,
locationid ,
ad_property,
createtime
from
ad
where
status=1
and in_used=1
and id={id} """
data = self.mydb.query(sql)
if data:
try:
line = data[0]
except Exception:
log.error(f"split data {data} failed!", exc_info=True)
if line:
try:
item = {}
item['id'], item['name'], item['ad_num'], item['ad_title'], item['ad_body'], item['ad_image'], item[
'jump_param'], item['ad_sort'], item['companyid'], item['gameid'], item['channelid'], item[
'jump_status'], item['locationid'], item['ad_property'], item['createtime'] = line
item['createtime'] = datetime.datetime.strftime(item['createtime'], "%Y-%m-%d %H:%M:%S")
if item.get('jump_param', "") and (item['ad_property'].find("jump_param") == -1):
temp = {}
temp['jump_param'] = item.get('jump_param', "")
if not item['ad_property']:
item['ad_property'] = {}
if not isinstance(item.get('ad_property', {}), dict):
if not item.get('ad_property', {}):
item['ad_property'] = {}.update(temp)
else:
item['ad_property'] = json.loads(
item.get('ad_property', {}).replace("", '"').replace("", '"'))
item['ad_property'].update(temp)
item['ad_property'] = json.dumps(item['ad_property'])
return item
except Exception:
log.error(f"write {item}", exc_info=True)
return None
else:
return None
else:
return None
def _update_localtion(self, id, line):
new = copy.deepcopy(line)
location_sql = f"select x,y,x_offset,y_offset,type,mode,ld_property from location WHERE in_used=1 and id={id}"
data = self.mydb.query(location_sql)
try:
new['x'], new['y'], new['x_offset'], new['y_offset'], new['type'], new['mode'], new['ld_property'] = data[0]
new['area'] = f"{new['area']},{new['x']},{new['y']},{new['x_offset']},{new['y_offset']}"
except Exception:
log.error(f"get localtion info by sql={location_sql} error!", exc_info=True)
return None
return new
produce_task()
return jsonify({'code': 200, 'message': "reflush AD cache success!"})