首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python请求操作系统错误104连接中断错误

在 Python 中,当你使用网络库(如 requestssocket)进行网络请求时,可能会遇到操作系统错误 104(连接中断错误)。这个错误通常表示在尝试与远程服务器通信时,连接被对方关闭或中断。

常见原因

  1. 服务器问题:服务器可能关闭了连接或崩溃。
  2. 网络问题:网络连接不稳定或中断。
  3. 防火墙或安全软件:防火墙或安全软件可能阻止了连接。
  4. 超时:请求超时,服务器关闭了连接。

解决方法

1. 捕获异常并重试

你可以捕获异常并在一定次数内重试请求。

代码语言:javascript
复制
import requests
from requests.exceptions import ConnectionError, Timeout

url = 'http://example.com'
max_retries = 3
retry_count = 0

while retry_count < max_retries:
    try:
        response = requests.get(url, timeout=5)
        response.raise_for_status()  # 检查是否有HTTP错误
        print(response.text)
        break  # 成功后退出循环
    except (ConnectionError, Timeout) as e:
        retry_count += 1
        print(f"Attempt {retry_count} failed: {e}")
        if retry_count == max_retries:
            print("Max retries reached. Exiting.")

2. 增加超时时间

有时,增加超时时间可以解决问题。

代码语言:javascript
复制
try:
    response = requests.get(url, timeout=10)  # 增加超时时间
    response.raise_for_status()
    print(response.text)
except (ConnectionError, Timeout) as e:
    print(f"Request failed: {e}")

3. 检查网络连接

确保你的网络连接稳定,可以通过其他工具(如浏览器)访问相同的URL,检查是否能正常访问。

4. 检查防火墙和安全软件

确保防火墙或安全软件没有阻止你的请求。你可以暂时禁用这些软件,看看问题是否解决。

5. 使用不同的网络库

有时,使用不同的网络库可能会解决问题。例如,使用 http.clienturllib3

代码语言:javascript
复制
import http.client

conn = http.client.HTTPConnection("example.com")
conn.request("GET", "/")
response = conn.getresponse()
print(response.status, response.reason)
data = response.read()
print(data)
conn.close()

示例代码

以下是一个完整的示例,展示了如何捕获异常并重试请求:

代码语言:javascript
复制
import requests
from requests.exceptions import ConnectionError, Timeout

def fetch_url(url, max_retries=3, timeout=5):
    retry_count = 0
    while retry_count < max_retries:
        try:
            response = requests.get(url, timeout=timeout)
            response.raise_for_status()  # 检查是否有HTTP错误
            return response.text
        except (ConnectionError, Timeout) as e:
            retry_count += 1
            print(f"Attempt {retry_count} failed: {e}")
            if retry_count == max_retries:
                print("Max retries reached. Exiting.")
                return None

url = 'http://example.com'
result = fetch_url(url)
if result:
    print(result)
else:
    print("Failed to fetch the URL.")
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券