Python 对“请求”使用keepalive http连接的正确方法是什么?
我正在使用python3和请求库进行rest通信。为了提高性能,我使用session对象来重用连接。我创建了一个会话实例,并使用它为每个用户的请求发送rest GET请求 但是,当请求速率达到每秒100个请求时,我开始出现“连接中止”错误。追踪是:Python 对“请求”使用keepalive http连接的正确方法是什么?,python,Python,我正在使用python3和请求库进行rest通信。为了提高性能,我使用session对象来重用连接。我创建了一个会话实例,并使用它为每个用户的请求发送rest GET请求 但是,当请求速率达到每秒100个请求时,我开始出现“连接中止”错误。追踪是: Traceback (most recent call last): File "/usr/lib/python3.7/site-packages/urllib3/connectionpool.py", line 672, in urlopen
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/urllib3/connectionpool.py", line 672, in urlopen
chunked=chunked,
File "/usr/lib/python3.7/site-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/lib/python3.7/site-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.7/http/client.py", line 1344, in getresponse
response.begin()
File "/usr/lib/python3.7/http/client.py", line 306, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.7/http/client.py", line 267, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.7/socket.py", line 589, in readinto
return self._sock.recv_into(b)
ConnectionResetError: [Errno 104] Connection reset by peer
服务器是一个带有uwsgi的python Flask应用程序。我使用以下命令启用了保持活动连接:
uwsgi \
--uid uwsgi \
--master \
--plugins http,python3,stats_pusher_statsd \
--http :8880 \
--buffer-size 32768 \
--enable-threads \
--processes 1 \
--so-keepalive \
--wsgi-file uwsgi.py
我是否需要在服务器端进行任何更改以使其正常工作?如果服务器不喜欢机器人程序/脚本并阻止您的请求,该怎么办?如果我不使用session object,则可以正常工作。您是否尝试使用来自
request
的session
对象?@Mox不是他们当前正在做的事情吗?如果服务器不是您的拥有一个,他们想中止你的连接是正常的,因为你建立了太多的连接。根据目前的结构,除了减速之外,实际上没什么可做的。
uwsgi \
--uid uwsgi \
--master \
--plugins http,python3,stats_pusher_statsd \
--http :8880 \
--buffer-size 32768 \
--enable-threads \
--processes 1 \
--so-keepalive \
--wsgi-file uwsgi.py