deploy.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. if __name__ == "__main__":
  20. # 数据库配置
  21. host = 'rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
  22. port = 3306
  23. user = 'qx_cas'
  24. password = parse.quote_plus('Qx@123456')
  25. database = 'qx_cas'
  26. db_engine = create_engine(
  27. "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(
  28. user, password, host, port, database
  29. ))
  30. print("mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(
  31. user, password, host, port, database
  32. ))
  33. DbSession = sessionmaker(bind=db_engine)
  34. # 日志配置
  35. log = Log.Mylog(log_name='signal_monitor', log_level = 'info')
  36. log.set_file_hl(file_name='log/info.log', log_level='info', size=1024* 1024 * 100)
  37. log.set_file_hl(file_name='log/error.log', log_level='error', size=1024* 1024 * 100)
  38. logger = log.get_logger()
  39. logger.info("pid is + {}".format(os.getpid()))
  40. asset_table_path='asset_table.xlsx'
  41. asset_sheet_num=1
  42. usecols_list=[4,5]
  43. asset_table=pd.read_excel(asset_table_path,sheet_name=asset_sheet_num,skiprows=1,usecols=usecols_list)
  44. SN_list=asset_table['SN号'].values.tolist()
  45. asset_table=asset_table.rename(columns={'SN号':'SN','状态':'state'})
  46. asset_table.set_index(["SN"],inplace=True)
  47. col_name=asset_table.columns.tolist()
  48. col_name.extend(['range','accum_soc','day_start_soc','day_end_soc','day_start_time','day_end_time'])
  49. asset_table=asset_table.reindex(columns=col_name)
  50. start_hour='00:00:00'#每日查询最早时间
  51. end_hour='23:59:00'#每日查询最晚时间
  52. date_index=pd.date_range('2021-07-01','2021-07-31')
  53. for date in date_index:
  54. '''遍历日期'''
  55. str_date=str(date)[:10]
  56. input_starttime=str_date+' '+start_hour
  57. input_endtime=str_date+' '+end_hour
  58. test_day=str_date[5:10]#月-日,用于建立sheet
  59. drive_info_aday=pd.DataFrame()
  60. SN_list_short=SN_list#先选择了0:50,50:end
  61. for SN in SN_list_short:
  62. '''遍历SN号'''
  63. SN=SN.strip('\t')
  64. SN=SN.strip('\n')
  65. try:
  66. logger.info("{}---{} START!".format(SN, str(str_date)))
  67. range=GetDistInfo(SN,input_starttime,input_endtime)
  68. range_df=pd.DataFrame([range])
  69. drive_info_aday=pd.concat([drive_info_aday,range_df],axis=0)
  70. logger.info("{}---{} DONE!".format(SN, str(str_date)))
  71. except Exception as e:
  72. logger.error(traceback.format_exc)
  73. logger.error(u"{} :{},{} 任务运行错误".format(SN,input_starttime,input_endtime), exc_info=True)
  74. drive_info_aday['time'] = str_date
  75. drive_info_aday.columns = ['sn', 'odo', 'accum_soc', 'start_soc', 'end_soc', 'start_time','end_time', 'min_soc', 'time']
  76. drive_info_aday.to_sql("odo_result",con=db_engine, if_exists="append",index=False)