我在 python 3 中使用 requests 库,尽管我尽了最大努力,但我无法让以下警告消失:
警告:requests.packages.urllib3.connectionpool:连接池已满,丢弃连接:myorganization.zendesk.com
我在多线程环境中使用请求同时获取和发布 json 文件到单个主机,绝对没有子域。在当前的设置中,我只使用了 20 个线程。
我尝试使用 aSession
来获取重用连接的请求,从而解决问题,但没有奏效。这是我的类构造函数中的代码:
self.session = requests.Session()
adapter = requests.adapters.HTTPAdapter(
pool_connections=100, pool_maxsize=100)
self.session.mount('http://', adapter)
self.session.headers.update({'Connection':'Keep-Alive'})
self.session.auth = (self._user+"/token", self._token)
Run Code Online (Sandbox Code Playgroud)
根据这里的建议,考虑到我正在使用的线程数,我不需要将池连接增加那么多,但尽管如此,即使增加 100,我也会收到此警告。
这让我认为根本没有重用连接,或者如果是,由于某种原因正在创建太多连接。我已经更新了请求,所以它是最新的版本。
有没有人有任何想法我可以摆脱这个?我正在调试一些代码,我认为这是某些请求未正确发出的罪魁祸首。
有关的:
我正在使用 python-urllib3 制作简单的 ip-info 提供程序,我应该如何将数据获取到值
import json
import urllib3
while True:
ip=input("Enter Ip Address : ")
url="https://ip-api.com/json/"
http = urllib3.PoolManager()
response=http.request('GET',url+ip)
data=response.read()
values=json.loads(data)
Run Code Online (Sandbox Code Playgroud)
我收到这样的错误
json.decoder.JSONDecodeError:期望值:第1行第1列(字符0)
我写了一个简单的脚本来从多个网站获取 html。尽管直到昨天我对脚本还没有任何问题。它突然开始抛出异常。
Traceback (most recent call last):
File "crowling.py", line 45, in <module>
result = requests.get(url)
File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/sessions.py", line 685, in send
r.content
File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/models.py", line 829, in content
self._content = b''.join(self.iter_content(CONTENT_CHUNK_SIZE)) or b''
File "/Users/gen/.pyenv/versions/3.7.1/lib/python3.7/site-packages/requests/models.py", line 754, in generate
raise ChunkedEncodingError(e)
requests.exceptions.ChunkedEncodingError: ("Connection broken: ConnectionResetError(54, 'Connection reset by …
Run Code Online (Sandbox Code Playgroud) 我正在深入研究 Python,并正在浏览 urllib3 的文档。尝试运行代码,但似乎它没有按预期方式工作。我的代码是
import urllib3
t = urllib3.PoolManager
test = t.request('GET', 'https://shadowhosting.net/')
print(test.data)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是
TypeError: request() missing 1 required positional argument: 'url'
Run Code Online (Sandbox Code Playgroud)
我尝试交换位置但仍然不起作用。我正在遵循文档(用户指南)的开头部分以供参考 - https://urllib3.readthedocs.io/en/latest/user-guide.html
我正在尝试维护与代理的连接池。我的代码如下所示:
>>> from urllib3 import PoolManager
>>> pool = PoolManager(10)
>>> pool.urlopen('GET', 'http://http-server/index.html',fields=None,headers=None,encode_multipart=False,multipart_boundary=None,proxies={'http': 'http://proxy'})
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它失败了:
>
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "urllib3/poolmanager.py", line 117, in urlopen
> response = conn.urlopen(method, u.request_uri, **kw)
> File "urllib3/connectionpool.py", line 427, in urlopen
> **response_kw)
> File "urllib3/response.py", line 195, in from_httplib
> **response_kw)
> TypeError: __init__() got an unexpected keyword argument 'proxies'
Run Code Online (Sandbox Code Playgroud)
知道我做错了什么吗?根据 urllib3 文档,关键字 args 被发送到 urlopen,但在这种情况下似乎没有发生。
这是urllib的链接,描述了代理关键字 arg 的用法。
import urllib3
import io
from bs4 import BeautifulSoup
import re
import cookielib
http = urllib3.PoolManager()
url = 'http://www.example.com'
headers = urllib3.util.make_headers(keep_alive=True,user_agent='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6')
r = http.urlopen('GET', url, preload_content=False)
# Params die dann am Post request übergeben werden
params = {
'login': '/shop//index.php',
'user': 'username',
'pw': 'password'
}
suche = {
'id' : 'searchfield',
'name' : 'suche',
}
# Post Anfrage inkl params (login) Antwort in response.data
response = http.request('POST', url, params, headers)
suche …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Tweepy 在 Python3 中编写 Twitter 流侦听器。流一段时间后我收到此错误:
urllib3.exceptions.ProtocolError: ('Connection broken: IncompleteRead(0 bytes read)', IncompleteRead(0 bytes read))
Run Code Online (Sandbox Code Playgroud)
我怎么能绕过这个,重新连接并继续?
我已经做好了:
from requests.packages.urllib3.exceptions import ReadTimeoutError, IncompleteRead
Run Code Online (Sandbox Code Playgroud)
和:
while True:
try:
twitter_stream.filter(track=keywordlist, follow=userlist)
except IncompleteRead:
continue
Run Code Online (Sandbox Code Playgroud)
但仍然收到错误。
尝试运行代码时发生以下错误:
Traceback (most recent call last):
response = session.post(base_url, params={'query': filename_query})
File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 578, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.7/site-packages/requests/sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/local/lib/python3.7/site-packages/urllib3/connectionpool.py", line 805, in urlopen
if retries.is_retry(method, response.status, has_retry_after):
File "/usr/local/lib/python3.7/site-packages/urllib3/util/retry.py", line 343, in is_retry
if not self._is_method_retryable(method):
File "/usr/local/lib/python3.7/site-packages/urllib3/util/retry.py", line 331, in _is_method_retryable
if self.method_whitelist and method.upper() not …
Run Code Online (Sandbox Code Playgroud) 我需要计算使用python3在网页内的单词。我应该使用哪个模块?urllib?
这是我的代码:
def web():
f =("urllib.request.urlopen("https://americancivilwar.com/north/lincoln.html")
lu = f.read()
print(lu)
Run Code Online (Sandbox Code Playgroud)