123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import random
- import os
- import logging
- import json
- import time
- import traceback
- import ast
- from gevent import monkey, pool
- monkey.patch_all()
- from flask import Flask, request
- from log import Log
- from config import set_config
- from ad_predict import get_creative_id_with_thompson, get_creative_id_with_thompson_weight
- app = Flask(__name__)
- log_ = Log()
- config_ = set_config()
- # 限制协程最大并发数:100
- gevent_pool = pool.Pool(100)
- # log_.info(f"server start...")
- @app.route('/healthcheck')
- def health_check():
- return 'ok!'
- @app.route('/ad/predict/getCreativeId', methods=['GET', 'POST'])
- def get_creative_id():
- start_time = time.time()
- try:
- request_data = json.loads(request.get_data())
- mid = request_data.get('mid')
- creative_id_list = request_data.get('creativeIdList')
- sort_strategy = request_data.get('sortStrategy', 'thompson')
- if sort_strategy == 'thompson_weight':
- thompson_result = get_creative_id_with_thompson_weight(mid=mid, creative_id_list=creative_id_list,
- gevent_pool=gevent_pool, sort_strategy=sort_strategy)
- else:
- thompson_result = get_creative_id_with_thompson(mid=mid, creative_id_list=creative_id_list,
- gevent_pool=gevent_pool, sort_strategy=sort_strategy)
- result = {'code': 200, 'message': 'success', 'data': {'mid': mid, 'creativeId': thompson_result['creative_id']}}
- log_message = {
- 'requestUri': '/ad/predict/getCreativeId',
- 'logTimestamp': int(time.time() * 1000),
- 'requestData': request_data,
- 'thompsonResult': thompson_result,
- 'result': result,
- 'executeTime': (time.time() - start_time) * 1000
- }
- log_.info(log_message)
- return json.dumps(result)
- except Exception as e:
- log_.error(traceback.format_exc())
- result = {'code': -1, 'message': 'fail'}
- return json.dumps(result)
- if __name__ == '__main__':
- app.run()
|