time_task_ai_high_quality_material.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from concurrent.futures import ThreadPoolExecutor
  2. import requests
  3. import datetime
  4. import json
  5. import pandas as pd
  6. from sqlalchemy import create_engine
  7. import uuid
  8. import traceback
  9. db_con_str = "mysql+pymysql://%s:%s@%s:%d/%s" % ("data", "hcst@2021", "139.186.27.96", 4000, "jeecg-boot")
  10. engine = create_engine(db_con_str, connect_args={'charset': 'utf8'})
  11. def send_request(account_id):
  12. # url = 'http://139.186.27.96:31012/ai_high_quality_material'
  13. url = 'http://139.186.27.96:31012/ai_high_quality_material'
  14. try:
  15. request_data = json.dumps({"account_id": account_id})
  16. request = requests.post(url, request_data)
  17. return json.loads(request.text)
  18. except Exception:
  19. return "account_id = %s, request = %s, traceback = %s" % (account_id, request, traceback.format_exc())
  20. # 0、 打印该定时任务被调用的时间
  21. unique_uuid = str(uuid.uuid4())
  22. print("***********", "高质量素材复建-Start, unique_uuid = ", unique_uuid, datetime.datetime.now(), "**************")
  23. # 1、获取已有的账号
  24. sql = """
  25. select account_id from ctop_ai_kuaishou_advertiser_strategy where status = 1
  26. """
  27. acc_df = pd.read_sql(sql, engine)
  28. acc_list = [int(account_id) for account_id in acc_df['account_id'].unique()]
  29. print(acc_list)
  30. # 2、 5个账户一组进行发送请求
  31. batch_num = 5
  32. for i in range(0, len(acc_list), batch_num):
  33. if i + batch_num < len(acc_list):
  34. print(datetime.datetime.now(),tuple(acc_list[i:i + batch_num]))
  35. with ThreadPoolExecutor(max_workers=batch_num) as pool:
  36. results = pool.map(send_request, tuple(acc_list[i: i+batch_num]))
  37. for r in results:
  38. print('res = %s' % r)
  39. else:
  40. with ThreadPoolExecutor(max_workers=batch_num) as pool:
  41. print(datetime.datetime.now(),acc_list[i: len(acc_list)])
  42. results = pool.map(send_request, tuple(acc_list[i: len(acc_list)]))
  43. for r in results:
  44. print('res = %s' % r)
  45. # 3、 打印该定时任务结束的时间
  46. print("***********", "高质量素材复建-End, unique_uuid = ", unique_uuid, datetime.datetime.now(), "**************")