您的位置:

对于urllib3错误ValueError("Timeout cannot be a boolean value. It must ""be an int, float or None.")的解决

  发布时间:2023-02-23 07:56:42
报错的原因在urllib中出现的原因是你在设置超时时间时传入了一个布尔值,而不是整数、浮点数或None。请检查代码并确保超时时间是一个数值类型。如果你想禁用超时,可以将 timeout=None 传递给函数你也可以用其他方式设置超时时间,例如这样就可以避免出现了如果你正在使用requests库,可以使用和等方法来设置超时时间。使用例子以下是使用 requests 库设置超时时间的示例以下是使用 aiohttp 库设置超时时间的示例希望这些例子能帮到你。

报错的原因

ValueError("Timeout cannot be a boolean value. It must ""be an int, float or None.")在urllib3中出现的原因是你在设置超时时间时传入了一个布尔值,而不是整数、浮点数或None。请检查代码并确保超时时间是一个数值类型。

如何解决

解决这个问题的方法是在设置超时时间时传入一个整数或浮点数。例如,如果你想设置5秒的超时时间,应该将 timeout=5.0 传递给urllib3函数。如果你想禁用超时,可以将 timeout=None 传递给函数。


import urllib3
http = urllib3.PoolManager()
r = http.request('GET', 'http://httpbin.org/get', timeout=5.0)

你也可以用其他方式设置超时时间,例如


import urllib3
http = urllib3.PoolManager(timeout=urllib3.Timeout(connect=1.0, read=2.0))
r = http.request('GET', 'http://httpbin.org/get')

这样就可以避免出现 ValueError("Timeout cannot be a boolean value. It must be an int, float or None.")了

如果你正在使用requests库,可以使用 requests.get(url, timeout=5.0) 和 requests.post(url, timeout=5.0)等方法来设置超时时间。

如果你正在使用 aiohttp库,可以使用 aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(total=5.0)) 或者 aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(sock_connect=1.0, sock_read=2.0)) 来设置超时时间。

总之,在你使用网络库请求网络资源时设置正确的超时时间, 保证程序的正常运行。

使用例子

以下是使用 requests 库设置超时时间的示例:


import requests

try:
    response = requests.get('http://httpbin.org/get', timeout=5.0)
    print(response.status_code)
except requests.exceptions.Timeout as e:
    print('Timeout Error:', e)
except requests.exceptions.RequestException as e:
    print('Request Exception:', e)

以下是使用 aiohttp 库设置超时时间的示例:


import aiohttp
import asyncio

async def fetch(session, url):
    async with session.get(url) as response:
        return await response.text()

async def main():
    timeout = aiohttp.ClientTimeout(total=5.0)
    async with aiohttp.ClientSession(timeout=timeout) as session:
        html = await fetch(session, 'http://httpbin.org/get')
        print(html)

try:
    asyncio.run(main())
except asyncio.TimeoutError as e:
    print('Timeout Error:', e)
except Exception as e:
    print('Error:', e)

希望这些例子能帮到你。