标签: urllib3

Python 请求,警告:urllib3.connectionpool:Connection pool is full

我在 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 的“请求”模块的连接池大小吗?

python multithreading urllib3 python-requests

2
推荐指数
1
解决办法
5317
查看次数

如何在python中使用urllib3获取json数据

我正在使用 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)

json urllib3 python-3.x

2
推荐指数
1
解决办法
6886
查看次数

Python 抓取:错误 54“连接被对等方重置”

我写了一个简单的脚本来从多个网站获取 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 web-scraping urllib3 python-requests

2
推荐指数
1
解决办法
9859
查看次数

类型错误:request() 缺少 1 个必需的位置参数:urllib3 中的“url”

我正在深入研究 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

python urllib3

2
推荐指数
1
解决办法
6023
查看次数

urllib3 - 无法设置 http 代理

我正在尝试维护与代理的连接池。我的代码如下所示:

>>> 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 的用法。

proxy http urllib3

1
推荐指数
1
解决办法
1万
查看次数

python urllib3登录+搜索

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)

python search login beautifulsoup urllib3

1
推荐指数
1
解决办法
3695
查看次数

绕过 IncompleteRead 异常

我正在使用 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)

但仍然收到错误。

python urllib3 tweepy

1
推荐指数
1
解决办法
2138
查看次数

AttributeError:“重试”对象没有属性“method_whitelist”

尝试运行代码时发生以下错误:

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)

python request urllib3 python-3.x

1
推荐指数
1
解决办法
1万
查看次数

计算网页中的单词

我需要计算使用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)

urllib urllib2 urllib3 python-3.x

0
推荐指数
1
解决办法
2690
查看次数