The following function needs to send request asynchronously:
No. of rows in devices.csv = 1 million
Required: send a POST request for all 1 million rows per day for 3 days
def check_in(): logging.info('Starting') day = 0 while day < 3: logging.info('Check-in Day = ' + str(day)) with open('devices.csv', newline='') as csvfile: reader = csv.DictReader(csvfile) for row in reader: device_sn = row['serial_number'] payload = { "product": "##", "board": "###", "hardware_id": "0000", "usage_id": "000", "mac_address": row['mac_address'], "serial_number": row['serial_number'] } logging.info( 'Check-in device: ' + device_sn) checkin_post(payload, device_sn) day += 1 def checkin_post(payload, device_sn): payload = payload serial_number = device_sn print('\n' + 72 * '=' + '\nPOST /device/' + serial_number + '/check-in') resp = requests.post(base_url + '/device/' + serial_number + '/check-in', auth=auth, json=payload) print(resp.status_code) The code might change to probably something like:
async def checkin_post(payload, device_sn): payload = payload serial_number = device_sn print('\n' + 72 * '=' + '\nPOST /device/' + serial_number + '/check-in') resp = requests.post(base_url + '/device/' + serial_number + '/check-in', auth=auth, json=payload) return resp.status_code async def main(payload, device_sn): checkin_post(payload, device_sn) Also, since there is no await, it isn't truly asynchronous.