我正在研究网络爬虫。可以在每个请求不创建线程的情况下执行许多请求(例如,每秒 500-1000 个)(我不是指线程池、重用等)?
问问题
1731 次
1 回答
1
我认为您在这里想要的是单个线程可以同时处理 n 个请求。
现在这意味着交错处理 2 个线程的步骤。这只有在有一些“阻塞”操作时才有意义。
现在,有人可能会说,是的,我们确实阻止了。所以我想要的是
- 请求 1 已发出,我正在等待回复
- 在等待请求 1 的响应是响应时发起请求 2。
- 获取请求 1 的响应并处理它
- 获取请求 2 的响应并进行处理。
这只有在 HTTP 是“异步的”时才有可能。不幸的是,事实并非如此。(一个好的阅读 - > http://wiki.answers.com/Q/Why_http_is_asynchronous)有一些“异步”HTTP客户端可以做浏览器中的AJAX。
它允许发起调用的线程继续。响应在回调中返回。
事实是他们有一个线程池来同步处理这些调用。只有它看起来是异步的。
示例:
http://hc.apache.org/httpcomponents-asyncclient-dev/index.html
于 2012-12-27T16:14:12.063 回答