有没有办法监控urllib2传输的速率?

1 投票
2 回答
1605 浏览
提问于 2025-04-16 12:08

可能重复的问题:
Python urllib2 进度钩子

我有一个脚本用来通过urllib2上传文件。我设置了超时时间,但我觉得如果传输卡住了,这个超时可能不会生效。我在想有没有办法监控urllib2的传输,如果传输速度低于每秒xx字节,就让它中止。

现在我使用的是signal.alarm,这个方法是根据文件大小除以我大概估计的传输速度来计算的,但这并不是最好的方法。

2 个回答

0

传输速度不是由你的urllib2决定的,而是由底层网络的情况决定的。你可以使用一些标准的操作系统网络监控工具(比如ntop),然后通过子进程来检查你的网络速度,这样在用urllib2传输数据之前就能知道网络的情况。你也可以使用多线程来实现,但一旦你的urllib2线程在进行输入输出操作时,它会被阻塞,这样其他线程就无法进行任何操作了。

再说一次,传输速度是网络的特性,是通过socket模块来实现的。你可以重写Socket中的一些类来检查网络速度并进行相应的调整(这并不简单),然后urllib2就可以使用这些修改过的socket。

0

你可以设置一个钩子

撰写回答