导航: 起始页 > Dive Into Python > HTTP Web 服务 > 避免通过 HTTP 重复地获取数据 | << >> | ||||
Python 研究(Dive Into Python)Python 从新手到高手 [DIP_5_4_CPUG_RELEASE] |
假如说你想用 HTTP 下载资源, 例如一个 Atom feed 汇聚。你不仅仅想下载一次; 而是想一次又一次地下载它, 如每小时一次, 从提供 news feed 的站点获得最新的消息。让我们首先用一种直接而原始的方法来实现它, 然后看看如何改进它。
例 11.2. 用直接而原始的方法下载 feed
>>> import urllib >>> data = urllib.urlopen('http://diveintomark.org/xml/atom.xml').read() >>> print data <?xml version="1.0" encoding="iso-8859-1"?> <feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en"> <title mode="escaped">dive into mark</title> <link rel="alternate" type="text/html" href="http://diveintomark.org/"/> <-- rest of feed omitted for brevity -->
那么这种方法有何不妥之处吗? 当然, 在测试或开发中一次性的使用没有什么不妥。我经常这样。我想要 feed 汇聚的内容, 我就获取 feed 的内容。 这种方法对其他 web 页面同样有效。 但是一旦你开始按照 web 服务的方式去思考有规则的访问需求时(记住, 你说你计划每小时一次地重复获取这样的 feed )就会发现这样的做法效率实在是太低了, 并且对服务器来说也太笨了。
下面先谈论一些 HTTP 的基本特性。
<< HTTP Web 服务 |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
HTTP 的特性 >> |