Python “问题”;远程端关闭连接,无响应“;创建多个会话时
以下是我的情况: 当我使用for循环登录某个REST网站大约100~500次时,如果我使用requests.post方法来处理我的请求,requests-freamwork总是发出标题错误。代码如下:Python “问题”;远程端关闭连接,无响应“;创建多个会话时,python,python-3.x,python-requests,Python,Python 3.x,Python Requests,以下是我的情况: 当我使用for循环登录某个REST网站大约100~500次时,如果我使用requests.post方法来处理我的请求,requests-freamwork总是发出标题错误。代码如下: # coding: UTF-8 """ @Author: ITACHY @CreateTime:2018/12/19 17:26 """ import datetime import uuid import requests def login_test(num): star
# coding: UTF-8
"""
@Author: ITACHY
@CreateTime:2018/12/19 17:26
"""
import datetime
import uuid
import requests
def login_test(num):
start = datetime.datetime.now()
url = XXXXX
uid = str(uuid.uuid4())
body = {
"type": "login",
"clientinfo":
{
"deviceid": uid,
"uid": uid,
"timezone": "Asia/Shanghai",
"osFamily": "ANDROID",
"osVersion": "22",
"deviceType": "MOBILE",
"deviceModel": "1.0",
"appVersion": "1.0.0-SNAPSHOT",
"location":
{
"longitude": 116.407394,
"latitude": 39.904211,
"type": "GCJ02"
}
}
}
header = {
'Content-Type': 'application/json; charset=UTF-8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
}
# response = requests.post(url, json = body, headers = header)
response = requests.post(url, json = body, headers = header)
if response.status_code == 200:
result = response.json()
print('Count: {}, Result: {}'.format(num, result))
if result["code"] == 0:
due = datetime.datetime.now() - start
print('Count: {}, Uid: {}, Token: {}, Time; {}, '.format(str(i), uid, result["data"]["accessToken"], str(due)))
else:
due = datetime.datetime.now() - start
print('Count: {}, Uid: {}, Response: {}, Time: {}, '.format(str(i), uid, result, str(due)))
else:
print('Count: {}, Login failed. Code: {}, Msg: {}'.format(num, response.status_code, response.text))
if __name__ == '__main__':
for i in range(500):
login_test(i)
但当我将代码更改为以下内容时:
# coding: UTF-8
"""
@Author: ITACHY
@CreateTime:2018/12/19 17:26
"""
import datetime
import uuid
import requests
# import logging
def login(count, session):
start = datetime.datetime.now()
url = XXXXXXX
uid = str(uuid.uuid4())
body = {
"type": "login",
"clientinfo":
{
"deviceid": uid,
"uid": uid,
"timezone": "Asia/Shanghai",
"osFamily": "ANDROID",
"osVersion": "22",
"deviceType": "MOBILE",
"deviceModel": "1.0",
"appVersion": "1.0.0-SNAPSHOT",
"location":
{
"longitude": 116.407394,
"latitude": 39.904211,
"type": "GCJ02"
}
}
}
header = {
'Content-Type': 'application/json; charset=UTF-8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'
}
# try:
# response = requests.post(url, json = body, headers = header)
response = session.post(url, json = body, headers = header)
if response.status_code == 200:
result = response.json()
# print(result)
if result["code"] == 0:
due = datetime.datetime.now() - start
print('Count: {}, Uid: {}, Token: {}, Time; {}, '.format(str(count), uid, result["data"]["accessToken"], str(due)))
else:
due = datetime.datetime.now() - start
print('Count: {}, Uid: {}, Response: {}, Time: {}, '.format(str(count), uid, result, str(due)))
else:
print('Login failed. Code: {}, Msg: {}'.format(response.status_code, response.text))
# except Exception as e:
# print(e)
if __name__ == '__main__':
with requests.Session() as session:
for i in range(5000):
login(i, session)
一切进展顺利,我认为第二种方法只创建一个会话,第一种方法创建很多会话,请检查。提前感谢如果有人可以确认如果您遇到此问题,请在真正的网站之前检查是否有NGINX代理,如果有,请尝试直接连接到该网站,因为当前问题的大量案例都是“代理”造成的 我在抓取一些网页并使用
请求时遇到了相同的错误。get
。
在我的代码中添加
try
和后,我的错误消失了 顺便说一句:服务器在ApacheNginx后面,由SpringWebFlux REST风格编写,容器处于拖曳状态。