Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.88 KB | None | 0 0
  1. # Sends api requests in batches of 10 to update the etp site
  2. import requests
  3. import json
  4. import logging
  5. import time
  6.  
  7. import config
  8.  
  9. def send_requests(json_fname, api_url, api_email, api_password, store_name):
  10.     results_json = []
  11.     try:
  12.         with open(json_fname) as json_file:
  13.             data = json.load(json_file)
  14.  
  15.             # Split requests into chunks of 10
  16.             request_chunks = list(divide_chunks(data, 10))
  17.             # Send out requests in chunks of 10 or less
  18.             for i in range(0,len(request_chunks)):
  19.                 # Pause every 100 requests
  20.                 if (i%100 == 0):
  21.                     print(f"Sent {i} requests so far")
  22.                 print(f"Sending request chunk {i} of {len(request_chunks)-1}")
  23.                 # payload = json.dumps(request_chunks[i])
  24.                 payload = request_chunks[i]
  25.                 try:
  26.                     r = requests.post(api_url, auth=(api_email,api_password), json=payload)
  27.                     if r.status_code == 200:
  28.                         print(f"Updated Chunk {i} Successfully")
  29.                         results_str = r.content.decode('utf8')
  30.                         current_results_list=json.loads(results_str)
  31.                         for j in range(len(current_results_list)):
  32.                             results_json.append(current_results_list[j])
  33.                         time.sleep(1)
  34.                     else:
  35.                         print(r.status_code)
  36.                 except requests.exceptions.HTTPError as httpErr:
  37.                     print("Http Error:", httpErr)
  38.                 except requests.exceptions.ConnectionError as connErr:
  39.                     print("Error Connecting:", connErr)
  40.                 except requests.exceptions.Timeout as timeOutErr:
  41.                     print("Timeout Error:", timeOutErr)
  42.                 except requests.exceptions.RequestException as reqErr:
  43.                     print("Something Else:", reqErr)
  44.  
  45.         if (len(results_json)>0):
  46.             try:
  47.                 json_fname = "./json/"+store_name+"/"+store_name+"_etp_update_results_"+config.today.strftime("%Y")+"_"+config.today.strftime("%m")+"_"+config.today.strftime("%d")+".json"
  48.                
  49.                 with open(json_fname, 'w') as fp:
  50.                     json.dump(results_json, fp)
  51.                 return json_fname
  52.                
  53.             except:
  54.                 print("Error saving json file.")
  55.                 pass
  56.         else:
  57.             print("No product changes have been detected")
  58.             return False
  59.            
  60.     except Exception as e:
  61.         print("An error occured")
  62.         logging.error(e)
  63.  
  64.  
  65. # Split data into chunks (Credit to https://auth.geeksforgeeks.org/user/Shantanu%20Sharma./)
  66. # Yield successive n-sized chunks from l.
  67. def divide_chunks(l, n):
  68.     # looping till length l
  69.     for i in range(0, len(l), n):
  70.         yield l[i:i + n]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement