import function
import math
import threading
from pymemcache.client.base import Client
mem1 =Client(('112.124.0.48', 11555))
mem2 =Client(('222.73.246.31', 11555))
#mem2 =Client(('222.73.246.33', 11555))
base=function.base()
gps=function.gps()
import config
CONFIG = config.config()
config=CONFIG.get_config()
config_other=CONFIG.get_config_other()
db2=function.db_mysql('127.0.0.1','root','root','fenxi','utf8',33306)
sql='select * from imei where imei not in (select imei from all_status) order by id desc'
list_all=db2.select_all(sql)
task_list=[]
task_end=0
task_num=2
task_onenum=math.ceil(len(list_all)/task_num)
db_obj={}
def db2_dosql(sql):
global db2
base.log(sql)
db2.dosql(sql)
def task_one(num):
global task_list, task_end, task_num,task_onenum,list_all,mem1,mem2,config_other,db2
base.sleep(num)
db_obj[num] = function.db_mysql('127.0.0.1', 'root', 'root', 'fenxi', 'utf8', 33306)
db = function.db_taos(config_other["taos"])
base.log('task->'+str(num))
start=(num-1)*task_onenum
end=start+task_onenum
print(start)
print(end)
if(end>len(list_all)-1):
end=len(list_all)-1
list=[]
for i in range(start,end):
list.append(list_all[i])
# print(data)
for v in list:
try:
imei = v['imei']
db_name = 'gpslog'
db_sql = "select * from gpslog{imei} where datatype='RP-Data' order by ts desc limit 1".format(
imei=imei)
print(db_sql)
data = db.select_all(db_sql)
this_gpstime = str(data[0][1])
this_lng = data[0][2]
this_lat = data[0][3]
this_speed = data[0][4]
this_altitude = data[0][5] # 方位角
this_satellites = data[0][6]
this_acc = data[0][7]
this_power = data[0][8]
this_fires = data[0][9]
this_vibration = data[0][10]
this_lv = data[0][11]
this_locations = data[0][12]
this_lac = data[0][18]
this_datatype = data[0][26]
this_alarmtype = data[0][20]
this_time = base.strtotime(this_gpstime)
this_vibration = data[0][10]
this_all_statu = "run,{this_lng},{this_lat},20200604135121,0.00,3.96,{this_time}|stop,{this_lng},{this_lat},20200604135531,0.00,0.00,{this_time}|{this_time}".format(
imei=imei, this_time=this_time, this_lng=this_lng, this_lat=this_lat, )
print(data)
all_status_str = imei + "_LatLng"
# 保存memcache 写数据库
print(this_all_statu)
# check_str=mem2.get(all_status_str)
# check_err=0
# try:
# if base.str(check_str)=='':
# check_err = 1
# except:
# check_err = 1
check_err = 1
if check_err==1:
#mem1.set(all_status_str, this_all_statu)
mem2.set(all_status_str, this_all_statu)
base.log(all_status_str + '->' + this_all_statu)
else:
print('无需写入')
# 保存mysql结果
# upsql = "update imei set ok=1 where imei='{imei}'".format(imei=imei)
#
# result =db3.dosql(upsql)
insersql = "insert into all_status (imei,str) values ('{imei}','{this_all_statu}')".format(imei=imei,this_all_statu=this_all_statu)
base.log(insersql)
#result =db_obj[num].dosql(insersql)
#print(result)
except:
pass
#db.close()
def task_all():
global task_num
for i in range(1,task_num+1):
#print(i)
threading.Thread( target=task_one, args=(i,) ).start()
#task_one(i)
task_all()
print("end")
# db.close()
# db2.close()
# base.exit()