让urllib重试多次

2 投票
1 回答
6580 浏览
提问于 2025-04-16 00:30

我的Python应用程序使用urllib2模块发起很多HTTP请求。这个应用可能会在网络不太可靠的环境中运行,网络延迟可能很低,而且丢包和网络超时的情况可能很常见。有没有办法修改urllib2模块的一部分,让每次请求在出现错误之前可以重试X次?有没有人见过类似的做法?

我能否在不修改整个应用的情况下,只是对urllib2模块进行封装,这样任何使用这个模块发起请求的代码都能自动使用重试的功能?

谢谢。

1 个回答

0

修改一个库的部分内容通常不是个好主意。

你可以在你用来获取数据的方法周围写一些包装器,这样就能实现你想要的功能。这其实很简单。

比如,你可以在自己创建的模块里定义一些和urllib2同名的方法,叫做myurllib2。然后只需要在你用到urllib2的地方把导入的部分改成myurllib2就可以了。

撰写回答