time_task_ai_program_creative_new_materials.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. db_con_str = "mysql+pymysql://%s:%s@%s:%d/%s" % ("data", "hcst@2021", "139.186.27.96", 4000, "jeecg-boot")
  8. engine = create_engine(db_con_str, connect_args={'charset': 'utf8'})
  9. def send_request(account_id):
  10. url = 'http://139.186.27.96:31012/ai_programme_new_material'
  11. request_data = json.dumps({"account_id": account_id})
  12. request = requests.post(url, request_data)
  13. return json.loads(request.text)
  14. # 0、 打印该定时任务被调用的时间
  15. print("*************************", datetime.datetime.now(), "*************************")
  16. # 1、获取已有的账号
  17. sql = """
  18. select account_id from ctop_ai_kuaishou_advertiser_strategy where status = 1
  19. """
  20. acc_df = pd.read_sql(sql, engine)
  21. acc_list = [int(account_id) for account_id in acc_df['account_id'].unique()]
  22. print(acc_list)
  23. # 2、 5个账户一组进行发送请求
  24. batch_num = 5
  25. for i in range(0, len(acc_list), batch_num):
  26. if i + batch_num < len(acc_list):
  27. print(tuple(acc_list[i:i+batch_num]))
  28. with ThreadPoolExecutor(max_workers=batch_num) as pool:
  29. results = pool.map(send_request, tuple(acc_list[i: i+batch_num]))
  30. for r in results:
  31. print('res = %s' % r)
  32. else:
  33. with ThreadPoolExecutor(max_workers=batch_num) as pool:
  34. print(acc_list[i: len(acc_list)])
  35. results = pool.map(send_request, tuple(acc_list[i: len(acc_list)]))
  36. for r in results:
  37. print('res = %s' % r)