Python 中的异步 HTTP POST 请求
asynchronous HTTP POST requests in Python
我有一个代码可以为列表中的所有元组顺序发布 HTTP 请求,并将响应附加到另一个列表。
import requests
url = 'https://www....'
input_list = [(1,2),(6,4),(7,8)]
output_list = []
for i in input_list:
resp = (requests.post('url',data = i[1]).text,i[0])
output_list.append(resp)
print(output_list)
有人可以帮我说明如何并行发出 HTTP 请求吗?
由于 requests
库本身不支持 asyncio,我会使用 multiprocessing.pool.ThreadPool
,假设大部分时间都花在等待 IO 上。否则使用 multiprocessing.Pool
可能会有好处
from multiprocessing.pool import ThreadPool
import requests
url = 'https://www....'
input_list = [(1,2),(6,4),(7,8)]
def get_url(i):
return (requests.post('url',data = i[1]).text,i[0])
with ThreadPool(10) as pool: #ten requests to run in paralel
output_list = list(pool.map(get_url, input_list))
我有一个代码可以为列表中的所有元组顺序发布 HTTP 请求,并将响应附加到另一个列表。
import requests
url = 'https://www....'
input_list = [(1,2),(6,4),(7,8)]
output_list = []
for i in input_list:
resp = (requests.post('url',data = i[1]).text,i[0])
output_list.append(resp)
print(output_list)
有人可以帮我说明如何并行发出 HTTP 请求吗?
由于 requests
库本身不支持 asyncio,我会使用 multiprocessing.pool.ThreadPool
,假设大部分时间都花在等待 IO 上。否则使用 multiprocessing.Pool
from multiprocessing.pool import ThreadPool
import requests
url = 'https://www....'
input_list = [(1,2),(6,4),(7,8)]
def get_url(i):
return (requests.post('url',data = i[1]).text,i[0])
with ThreadPool(10) as pool: #ten requests to run in paralel
output_list = list(pool.map(get_url, input_list))