res_prediction.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. power_df['model'] = args['model']
  29. power_df['predict'] = power_df[args['col_pre']]
  30. features_reserve = col_reserve + ['model', 'predict']
  31. insert_data_into_mongo(power_df[set(features_reserve)], args)
  32. success = 1
  33. except Exception as e:
  34. my_exception = traceback.format_exc()
  35. my_exception.replace("\n", "\t")
  36. result['msg'] = my_exception
  37. end_time = time.time()
  38. result['success'] = success
  39. result['args'] = args
  40. result['start_time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(start_time))
  41. result['end_time'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(end_time))
  42. print("Program execution ends!")
  43. return result
  44. if __name__ == "__main__":
  45. print("Program starts execution!")
  46. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
  47. logger = logging.getLogger("res_prediction log")
  48. from waitress import serve
  49. serve(app, host="0.0.0.0", port=10100)
  50. print("server start!")