ad_creative_cvr_update.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import traceback
  2. import datetime
  3. import json
  4. import time
  5. from odps import ODPS
  6. from db_helper import RedisHelper
  7. from utils import send_msg_to_feishu
  8. from config import set_config
  9. from log import Log
  10. config_ = set_config()
  11. log_ = Log()
  12. def main(project, table):
  13. try:
  14. # 获取广告ad_idea_id对应的点击次数、转化次数 和 cvr
  15. odps = ODPS(
  16. access_id=config_.ODPS_CONFIG['ACCESSID'],
  17. secret_access_key=config_.ODPS_CONFIG['ACCESSKEY'],
  18. project=project,
  19. endpoint=config_.ODPS_CONFIG['ENDPOINT'],
  20. )
  21. records = odps.read_table(name=table)
  22. ad_creative_data = []
  23. for item in records:
  24. creative_id = item['creative_id']
  25. click_pv = item['click_pv']
  26. conversion_pv = item['conversion_pv']
  27. cvr = item['cvr']
  28. if creative_id is None or creative_id == '':
  29. continue
  30. try:
  31. cvr = float(cvr)
  32. except:
  33. continue
  34. if cvr == 0:
  35. continue
  36. ad_creative_data.append(
  37. {'creative_id': creative_id, 'click_pv': click_pv, 'conversion_pv': conversion_pv, 'cvr': cvr}
  38. )
  39. log_.info(f"ad_creative_data count: {len(ad_creative_data)}")
  40. log_.info(f"ad_creative_data: {ad_creative_data}")
  41. # 更新redis
  42. redis_helper = RedisHelper()
  43. i = 0
  44. for ad_creative in ad_creative_data:
  45. try:
  46. key_name = f"{config_.CREATIVE_CVR_KEY_PREFIX}{ad_creative['creative_id']}"
  47. value = json.dumps(ad_creative['cvr'])
  48. redis_helper.set_data_to_redis(key_name=key_name, value=value, expire_time=24 * 3600)
  49. i += 1
  50. except:
  51. continue
  52. log_.info(f"to redis count: {i}")
  53. except Exception as e:
  54. log_.error(f"广告Thompson-cvr参数更新失败, exception: {e}, traceback: {traceback.format_exc()}")
  55. send_msg_to_feishu(
  56. webhook=config_.FEISHU_ROBOT['server_robot'].get('webhook'),
  57. key_word=config_.FEISHU_ROBOT['server_robot'].get('key_word'),
  58. msg_text=f"rov-offline{config_.ENV_TEXT} - 广告Thompson-cvr参数更新失败\n"
  59. f"exception: {e}\n"
  60. f"traceback: {traceback.format_exc()}"
  61. )
  62. if __name__ == '__main__':
  63. project = 'loghubods'
  64. table = ''
  65. now_date = datetime.datetime.today()
  66. dt = datetime.datetime.strftime(now_date, '%Y%m%d %H:%M:%S')
  67. log_.info(f"dt: {dt}")
  68. start_time = time.time()
  69. main(project=project, table=table)
  70. log_.info(f"excuteTime: {(time.time() - start_time) * 1000}ms")