Post 带线程的请求

Post request with threading

这是我的代码片段:

urls = ["http://goggle.com", "http://linux.com"]
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
data= {"k1": "v1"}
for url in urls:
    t = threading.Thread(target=requests.post, args=(url,), kwargs={'json': data, 'headers': headers})
    threads.append(t)
    t.start()

for thread in threads:
    thread.join()

但最后我得到了这个错误TypeError: post() got multiple values for argument 'json'。那么调用post请求并在线程lyb中传递url、json和headers的合适方法是什么。

您没有正确设置 threading.Thread。我建议将目标参数包装在一个函数中。

def post_requests(req):
    r=requests.post(req,json=data, headers=headers)
    print(r)
    return r

您不需要包含 kwargs,然后 运行 您的脚本包含以下内容:

threads = []
for url in urls:
    t = threading.Thread(target=post_requests, args=(url,))
    
    threads.append(t)
    t.start()

for thread in threads:
    thread.join()

你的输出:

<Response [405]>
<Response [200]>

您可能想检查为什么 "http://goggle.com" returns [405]