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!")