1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- import pandas as pd
- from flask import Flask,request,jsonify
- import time
- import logging
- import traceback
- from common.database_dml import get_data_from_mongo,insert_data_into_mongo
- app = Flask('post_processing——service')
- @app.route('/hello', methods=['POST'])
- def hello():
- return jsonify(message='Hello, World!')
- #1.AGC/AVC信号判断限电(有的场站准 有的不准) 1种方法 数据库数据有问题 暂时用不了
- def predict_result_adjustment(df, args):
- params = eval(args['params'])
- df_res = pd.DataFrame()
- model_names = params['new_names'].keys()
- for model in params['adjustments']:
- if model in model_names:
- new_name = params['new_names'][model]
- else:
- new_name = model
- rates = params['adjustments'][model].keys()
- df_tmp = df[df['model']==model]
- df_tmp['hour'] = df_tmp['dateTime'].apply(lambda x:x[11:13])
- df_tmp['model'] = new_name
- for rate in rates:
- hours = params['adjustments'][model][rate]
- # 提取小时部分(格式化为两位字符串
- df_tmp.loc[df_tmp['hour'].isin(hours), 'predict'] *= float(rate)
- # 删除临时的 hour 列
- df_res = pd.concat([df_res,df_tmp],ignore_index=True)
- return df_res.drop('hour', axis=1)
- @app.route('/post_processing', methods=['POST'])
- def data_join():
- # 获取程序开始时间
- start_time = time.time()
- result = {}
- success = 0
- print("Program starts execution!")
- try:
- args = request.values.to_dict()
- print('args',args)
- logger.info(args)
- df_pre = get_data_from_mongo(args)
- res_df = predict_result_adjustment(df_pre, args)
- insert_data_into_mongo(res_df,args)
- success = 1
- except Exception as e:
- my_exception = traceback.format_exc()
- my_exception.replace("\n","\t")
- result['msg'] = my_exception
- end_time = time.time()
- result['success'] = success
- result['args'] = args
- result['start_time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(start_time))
- result['end_time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(end_time))
- print("Program execution ends!")
- return result
- if __name__=="__main__":
- print("Program starts execution!")
- logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
- logger = logging.getLogger("post_processing")
- from waitress import serve
- serve(app, host="0.0.0.0", port=10098)
- print("server start!")
-
-
-
|