app.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import random
  2. import os
  3. import logging
  4. import json
  5. import time
  6. import traceback
  7. import ast
  8. from gevent import monkey, pool
  9. monkey.patch_all()
  10. from flask import Flask, request
  11. from log import Log
  12. from config import set_config
  13. from ad_predict import get_creative_id_with_thompson
  14. app = Flask(__name__)
  15. log_ = Log()
  16. config_ = set_config()
  17. gevent_pool = pool.Pool(100)
  18. # log_.info(f"server start...")
  19. @app.route('/healthcheck')
  20. def health_check():
  21. return 'ok!'
  22. @app.route('/ad/predict/getCreativeId', methods=['GET', 'POST'])
  23. def get_creative_id():
  24. start_time = time.time()
  25. try:
  26. request_data = json.loads(request.get_data())
  27. mid = request_data.get('mid')
  28. creative_id_list = request_data.get('creativeIdList')
  29. thompson_result = get_creative_id_with_thompson(mid=mid, creative_id_list=creative_id_list, gevent_pool=gevent_pool)
  30. result = {'code': 200, 'message': 'success', 'data': {'mid': mid, 'creativeId': thompson_result['creative_id']}}
  31. log_message = {
  32. 'requestUri': '/ad/predict/getCreativeId',
  33. 'logTimestamp': int(time.time() * 1000),
  34. 'requestData': request_data,
  35. 'thompsonResult': thompson_result,
  36. 'result': result,
  37. 'executeTime': (time.time() - start_time) * 1000
  38. }
  39. log_.info(log_message)
  40. return json.dumps(result)
  41. except Exception as e:
  42. log_.error(traceback.format_exc())
  43. result = {'code': -1, 'message': 'fail'}
  44. return json.dumps(result)
  45. if __name__ == '__main__':
  46. app.run()