调整日志
This commit is contained in:
parent
68466a0824
commit
23f8d14f66
@ -4,143 +4,18 @@ import sys
|
|||||||
from flask import Flask, jsonify
|
from flask import Flask, jsonify
|
||||||
from flask_restful import reqparse, abort, Api, Resource
|
from flask_restful import reqparse, abort, Api, Resource
|
||||||
import logging
|
import logging
|
||||||
from myredis.myredis import my_redis
|
from ops.ad_produce import produce_task
|
||||||
from mysql.mmysql import MysqlBase
|
|
||||||
from prod_config import mysql_promotion_config
|
|
||||||
import datetime
|
|
||||||
import pdb
|
|
||||||
import json
|
|
||||||
import copy
|
|
||||||
import time
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
parser = reqparse.RequestParser()
|
parser = reqparse.RequestParser()
|
||||||
parser.add_argument('locationid')
|
# parser.add_argument('locationid')
|
||||||
|
|
||||||
|
|
||||||
class RelushADinfo(Resource):
|
class RelushADinfo(Resource):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.args = parser.parse_args()
|
pass
|
||||||
self.mydb = MysqlBase(**mysql_promotion_config)
|
|
||||||
self.expired = 60 * 2 * 60
|
|
||||||
self.remove_list = ('ad_num', 'gameid')
|
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
locationid = self.args['locationid']
|
produce_task()
|
||||||
if locationid:
|
return jsonify({'code': 200, 'message': "reflush AD cache success!"})
|
||||||
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
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user