deploy.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #coding=utf-8
  2. # 计算里程
  3. from math import radians, cos, sin, asin, sqrt
  4. import pandas as pd
  5. import numpy as np
  6. from datetime import datetime
  7. from datetime import timedelta
  8. from sqlalchemy import create_engine
  9. from sqlalchemy.orm import sessionmaker
  10. from GpsRank import *
  11. from ProcessDfBms import *
  12. from ProcessDfGps import *
  13. from LIB.MIDDLE.odo.CalDist import *
  14. from LIB.BACKEND import DBManager, Log
  15. import pdb
  16. from urllib import parse
  17. import traceback
  18. import os
  19. import time
  20. import pymysql
  21. if __name__ == "__main__":
  22. # 更新sn列表
  23. host='rm-bp10j10qy42bzy0q7.mysql.rds.aliyuncs.com'
  24. port=3306
  25. db='qixiang_oss'
  26. user='qixiang_oss'
  27. password='Qixiang2021'
  28. conn = pymysql.connect(host=host, port=port, user=user, password=password, database=db)
  29. cursor = conn.cursor()
  30. cursor.execute("select sn, imei from app_device")
  31. res = cursor.fetchall()
  32. df_sn = pd.DataFrame(res, columns=['sn', 'imei'])
  33. conn.close();
  34. # 结果数据库配置
  35. host = 'rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
  36. port = 3306
  37. user = 'qx_cas'
  38. password = parse.quote_plus('Qx@123456')
  39. database = 'qx_cas'
  40. db_engine = create_engine(
  41. "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(
  42. user, password, host, port, database
  43. ))
  44. DbSession = sessionmaker(bind=db_engine)
  45. # 日志配置
  46. now_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())[0:10]
  47. if not os.path.exists('log/' + now_str):
  48. os.makedirs('log/' + now_str)
  49. log = Log.Mylog(log_name='odo', log_level = 'info')
  50. log.set_file_hl(file_name='log/{}/info.log'.format(now_str), log_level='info', size=1024* 1024 * 100)
  51. log.set_file_hl(file_name='log/{}/error.log'.format(now_str), log_level='error', size=1024* 1024 * 100)
  52. logger = log.get_logger()
  53. logger.info("pid is + {}".format(os.getpid()))
  54. asset_table_path='asset_table.xlsx'
  55. asset_sheet_num=2
  56. usecols_list=[4,5]
  57. asset_table=pd.read_excel(asset_table_path,sheet_name=asset_sheet_num,skiprows=1,usecols=usecols_list)
  58. SN_list=asset_table['SN号'].values.tolist()
  59. asset_table=asset_table.rename(columns={'SN号':'SN','状态':'state'})
  60. asset_table.set_index(["SN"],inplace=True)
  61. col_name=asset_table.columns.tolist()
  62. col_name.extend(['range','accum_soc','day_start_soc','day_end_soc','day_start_time','day_end_time'])
  63. asset_table=asset_table.reindex(columns=col_name)
  64. start_hour='00:00:00'#每日查询最早时间
  65. end_hour='23:59:00'#每日查询最晚时间
  66. date_index=pd.date_range('2021-07-01','2021-07-31')
  67. for date in date_index:
  68. '''遍历日期'''
  69. str_date=str(date)[:10]
  70. input_starttime=str_date+' '+start_hour
  71. input_endtime=str_date+' '+end_hour
  72. test_day=str_date[5:10]#月-日,用于建立sheet
  73. drive_info_aday=pd.DataFrame()
  74. SN_list_short=SN_list#先选择了0:50,50:end
  75. for SN in SN_list_short:
  76. '''遍历SN号'''
  77. SN=SN.strip('\t')
  78. SN=SN.strip('\n')
  79. try:
  80. logger.info("{}---{} START!".format(SN, str(str_date)))
  81. range=GetDistInfo(SN,input_starttime,input_endtime)
  82. range_df=pd.DataFrame([range])
  83. drive_info_aday=pd.concat([drive_info_aday,range_df],axis=0)
  84. logger.info("{}---{} DONE!".format(SN, str(str_date)))
  85. except Exception as e:
  86. logger.error(traceback.format_exc)
  87. logger.error(u"{} :{},{} 任务运行错误".format(SN,input_starttime,input_endtime), exc_info=True)
  88. drive_info_aday['time'] = str_date
  89. drive_info_aday.columns = ['sn', 'odo', 'accum_soc', 'start_soc', 'end_soc', 'start_time','end_time', 'min_soc', 'time']
  90. drive_info_aday.to_sql("odo_result",con=db_engine, if_exists="append",index=False)