res_prediction.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import pandas as pd
  2. from pymongo import MongoClient
  3. import pickle
  4. from flask import Flask, request
  5. import time
  6. import logging
  7. import traceback
  8. from common.database_dml import get_data_from_mongo, insert_data_into_mongo
  9. app = Flask('res_prediction——service')
  10. def str_to_list(arg):
  11. if arg == '':
  12. return []
  13. else:
  14. return arg.split(',')
  15. @app.route('/res_prediction', methods=['POST'])
  16. def model_prediction_lightgbm():
  17. # 获取程序开始时间
  18. start_time = time.time()
  19. result = {}
  20. success = 0
  21. print("Program starts execution!")
  22. try:
  23. args = request.values.to_dict()
  24. print('args', args)
  25. logger.info(args)
  26. col_reserve = str_to_list(args['col_reserve'])
  27. power_df = get_data_from_mongo(args)
  28. if 'is_limit' in power_df.columns:
  29. power_df = power_df[power_df['is_limit'] == False]
  30. power_df['model'] = args['model']
  31. power_df['predict'] = power_df[args['col_pre']]
  32. features_reserve = col_reserve + ['model', 'predict']
  33. insert_data_into_mongo(power_df[list(set(features_reserve))], args)
  34. success = 1
  35. except Exception as e:
  36. my_exception = traceback.format_exc()
  37. my_exception.replace("\n", "\t")
  38. result['msg'] = my_exception
  39. end_time = time.time()
  40. result['success'] = success
  41. result['args'] = args
  42. result['start_time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(start_time))
  43. result['end_time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(end_time))
  44. print("Program execution ends!")
  45. return result
  46. if __name__ == "__main__":
  47. print("Program starts execution!")
  48. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
  49. logger = logging.getLogger("res_prediction log")
  50. from waitress import serve
  51. serve(app, host="0.0.0.0", port=10105)
  52. print("server start!")