【发布时间】:2019-10-14 21:27:30
【问题描述】:
以下函数需要异步发送请求:
没有。 devices.csv 中的行数 = 100 万
必需:每天为所有 100 万行发送 POST 请求,持续 3 天
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)
代码可能会更改为:
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)
另外,由于没有await,它并不是真正的异步。
【问题讨论】:
-
就目前而言,这个问题太宽泛了。您是否尝试过自己将其从请求转换为异步?
-
@wpercy 我已经发布了我尝试过的内容,我确定它不正确。
-
要么在线程池中执行对请求的调用,要么查看 aiohttp
标签: python python-3.x python-requests python-asyncio