【问题标题】:Connection Abborted when threading requests线程请求时连接中止
【发布时间】:2021-07-16 14:25:15
【问题描述】:
import threading , requests


list = [
"balajidurgaceramics.com",
"km-associates.in",
"www.auifs.org",
"www.cadetcarebd.com",
"thaygiaoquocdan.vn",
"plastimedicos.com",
"www.styleprojectss.com",
"www.matricjackets.com",
"www.ottenandpartners.co.za"
"www.carteplastique.fr",
"hellocodersabbir.com",
"playrifa.com",
"amedgroup.net",
"alphatechservices.org.in",
"aaqildental.com",
"montessoriassociation.org.ua",
"amorehairandbeauty.co.u"
]

def test(url):
    r = requests.get('http://'+url)
    r = r.url
    print(r)

for x in list:
    t = threading.Thread(target=test, args=(x, ))
    t.start()

我想为列表中的每个网站获取 http / https,但是当我运行它时,我得到了一个错误

有些网站可以获取url(http&https),​​但是只能访问14-16的网站,其他网站不能获取,报错

错误:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/data/com.termux/files/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner
    self.run()
  File "/data/data/com.termux/files/usr/lib/python3.9/threading.py", line 892, in run
    self._target(*self._args, **self._kwargs)
  File "/storage/emulated/0/termux/k.py", line 28, in test
    r = requests.get('http://'+url)
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/requests/api.py", line 76, in get
    return request('get', url, params=params, **kwargs)
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/requests/api.py", line 61, in request
    return session.request(method=method, url=url, **kwargs)
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/data/data/com.termux/files/usr/lib/python3.9/site-packages/requests/adapters.py", line 498, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

有没有人可以解决我的问题,我希望我列表中的所有网站都可以获取 http 或 https 取决于网站

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python python-3.x multithreading python-requests python-multithreading


    【解决方案1】:

    你忘记了中间的逗号

    "www.ottenandpartners.co.za"
    "www.carteplastique.fr",
    

    因此 python 将这些字符串连接到 "www.ottenandpartners.co.zawww.carteplastique.fr" 这不是一个有效的 URL,因此你得到了这个错误。

    在最后一个 URL 中你写的是“amorehairandbeauty.co.u”而不是“.co.uk”(我猜)。

    实际上,它与线程无关,您认为线程导致这种情况的原因是因为使用线程比没有线程更快地到达该 URL,但是在等待 Python 到达几秒钟之后这个 URL 你也会遇到这个错误。

    【讨论】:

    • 哦,是的,我已经输入了逗号,但仍然出现同样的错误
    • 如果我把 5 个网站放在列表中,它不会出错,你知道如果我把 17 个网站放在我的列表中为什么会出错吗?
    • @Phenom 我在回答中告诉过你,它与 URL 的数量无关,但最后一个 URL 已损坏,请再次阅读我的上一个答案
    猜你喜欢
    • 2015-08-02
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多