Commit c4fa88d5 authored by 张彦钊's avatar 张彦钊

update dairyQueueUpdate file

parent 4cecec77
This diff is collapsed.
...@@ -172,7 +172,7 @@ def update_dairy_queue(score_df,predict_score_df): ...@@ -172,7 +172,7 @@ def update_dairy_queue(score_df,predict_score_df):
return score_df.index.tolist() return score_df.index.tolist()
def update_sql_dairy_queue(queue_name, diary_id,device_city): def update_sql_dairy_queue(queue_name, diary_id,device_id, city_id):
db = pymysql.connect(host='rdsmaqevmuzj6jy.mysql.rds.aliyuncs.com', port=3306, user='work', db = pymysql.connect(host='rdsmaqevmuzj6jy.mysql.rds.aliyuncs.com', port=3306, user='work',
passwd='workwork', db='doris_test') passwd='workwork', db='doris_test')
cursor = db.cursor() cursor = db.cursor()
...@@ -182,7 +182,7 @@ def update_sql_dairy_queue(queue_name, diary_id,device_city): ...@@ -182,7 +182,7 @@ def update_sql_dairy_queue(queue_name, diary_id,device_city):
print("写入前") print("写入前")
print(id_str[:80]) print(id_str[:80])
sql = "update device_diary_queue set {}='{}' where device_id = '{}' and city_id = '{}'".format\ sql = "update device_diary_queue set {}='{}' where device_id = '{}' and city_id = '{}'".format\
(queue_name,id_str,device_city[0],device_city[1]) (queue_name,id_str,device_id, city_id)
cursor.execute(sql) cursor.execute(sql)
db.commit() db.commit()
db.close() db.close()
...@@ -211,10 +211,10 @@ def get_native_queue(device_id,city_id): ...@@ -211,10 +211,10 @@ def get_native_queue(device_id,city_id):
def multi_update(queue_name,queue_arg,device_id,city_id): def multi_update(queue_name,queue_arg,device_id,city_id):
if queue_arg[0] != []: if queue_arg[0] != []:
diary_id = predict(queue_name,queue_arg,device_id,city_id) diary_id = predict(queue_name,queue_arg,device_id,city_id)
update_sql_dairy_queue(queue_name, diary_id,device_id,city_id) return diary_id
print("更新结束")
else: else:
print("预测集是空,不需要预测") print("预测集是空,不需要预测")
return False
def get_queue(device_id, city_id,queue_name): def get_queue(device_id, city_id,queue_name):
...@@ -227,35 +227,33 @@ def get_queue(device_id, city_id,queue_name): ...@@ -227,35 +227,33 @@ def get_queue(device_id, city_id,queue_name):
cursor.execute(sql) cursor.execute(sql)
result = cursor.fetchall() result = cursor.fetchall()
df = pd.DataFrame(list(result)) df = pd.DataFrame(list(result))
if not df.empty: if not df.empty:
queue_list = df.loc[0,0].split(",") queue_list = df.loc[0,0].split(",")
queue_list = list(map(lambda x: "diary|" + str(x), queue_list)) queue_list = list(map(lambda x: "diary|" + str(x), queue_list))
db.close() db.close()
return queue_list
return True, queue_list
else: else:
print("该用户对应的日记队列为空") print("该用户对应的日记队列为空")
return False, [] return False
def user_update(device_id,city_id): def user_update(device_id,city_id):
global native_queue_list
queue_name_list = ["native_queue","nearby_queue","nation_queue","megacity_queue"] queue_name_list = ["native_queue","nearby_queue","nation_queue","megacity_queue"]
for queue_name in queue_name_list: for queue_name in queue_name_list:
exist,queue_list = get_queue(device_id, city_id,queue_name) queue_list = get_queue(device_id, city_id,queue_name)
# 下面的代码是用来对比native_queue是否发生变化,如果发生了变化,就不更新日记队列了 if queue_name == "native_queue":
# if queue_name == "native_queue": native_queue_list = queue_list
# native_queue_list = if queue_list:
queue_predict = list(set(queue_list) & set(data_set_cid))
queue_not_predict = list(set(queue_list) - set(data_set_cid))
if exist: queue_arg = [queue_predict,queue_not_predict,queue_list]
queue_predcit = list(set(queue_list) & set(data_set_cid)) diary_id = multi_update(queue_name, queue_arg, device_id, city_id)
queue_not_predcit = list(set(queue_list) - set(data_set_cid)) if diary_id and (native_queue_list == get_native_queue(device_id,city_id)):
queue_arg = [queue_predcit,queue_not_predcit,queue_list] update_sql_dairy_queue(queue_name, diary_id, device_id, city_id)
multi_update(queue_name,queue_arg,device_id,city_id) print("更新结束")
else:
print("不需要更新日记队列")
else: else:
print("日记队列为空") print("日记队列为空")
......
from utils import con_sql from utils import con_sql
from datetime import datetime from datetime import datetime
from config import *
import pandas as pd
import os
import time
# 获取当下一分钟内活跃用户 # 获取当下一分钟内活跃用户
...@@ -7,19 +11,40 @@ def get_active_users(): ...@@ -7,19 +11,40 @@ def get_active_users():
now = datetime.now() now = datetime.now()
now_start = str(now)[:16] + ":00" now_start = str(now)[:16] + ":00"
now_end = str(now)[:16] + ":59" now_end = str(now)[:16] + ":59"
没有city_id的是“” 这个值可能是空 sql = "select device_id,city_id from user_active_time limit 1;"
sql = "select device_id from user_active_time order by active_time desc limit 1;" # TODO 正式上线后用下面的sql语句
# sql = "select device_id from user_active_time " \ # sql = "select device_id,city_id from user_active_time " \
# "where active_time <= '{}' and active_time >= '{}'".format(now_end,now_start) # "where active_time <= '{}' and active_time >= '{}'".format(now_end,now_start)
device_id_df = con_sql(sql) df = con_sql(sql)
if device_id_df.empty: if df.empty:
print("当下这一分钟没有活跃用户,不需要预测") print("当下这一分钟没有活跃用户,不需要预测")
return True,None for eachFile in os.listdir("/tmp"):
if "xlearn" in eachFile:
os.remove("/tmp" + "/" + eachFile)
time.sleep(58)
return False
else:
df = df.rename(columns={0: "device_id", 1: "city_id"})
old_device_id_list = pd.read_csv(DIRECTORY_PATH + "data_set_device_id.csv")["device_id"].values.tolist()
# 求活跃用户和老用户的交集,也就是只预测老用户
df = df.loc[df["device_id"].isin(old_device_id_list)]
if df.empty:
print("该列表是新用户,不需要预测")
else: else:
device_id_list = device_id_df[0].values.tolist() # TODO 正式上线后注释下面的只预测尾号是6的代码
# 对device_id 进行去重 # 只预测尾号是6的ID,这块是测试要求的,这块也可以在数据库取数据时过滤一下
device_id_list = list(set(device_id_list)) device_temp_list = df["device_id"].values.tolist()
return False,device_id_list predict_list = list(filter(lambda x: str(x)[-1] == "6", device_temp_list))
df = df.loc[df["device_id"].isin(predict_list)]
if df.empty:
print("没有尾号是6的用户,不需要预测")
else:
device_list = df["device_id"].values.tolist()
city_list = df["city_id"].values.tolist()
device_city_list = list(zip(device_list, city_list))
return device_city_list
def fetch_user_profile(device_id): def fetch_user_profile(device_id):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment