Possible Duplicate:
Multiple (asynchronous) connections with urllib2 or other http library?
我正在开发一个Linux web服务器,它运行Python代码,通过HTTP从第三方API获取实时数据。数据被放入MySQL数据库。 我需要对很多URL进行大量的查询,而且我需要快速(更快=更好)完成它。目前我正在使用urllib3作为我的HTTP库。 最好的办法是什么?我应该生成多个线程(如果是,有多少个?)每个查询都有不同的URL? 我很想听听你的想法-谢谢!
您应该使用多线程和流水线请求。例如搜索->;详细信息->;保存
您可以使用的线程数不只是取决于您的设备。这项服务可以服务多少个请求?它允许运行多少个并发请求?甚至你的带宽也可能成为瓶颈。
如果你说的是一种抓取-服务可能会在特定的请求限制后阻止你,所以你需要使用代理或多个IP绑定。
对于我来说,在大多数情况下,我可以从python脚本在笔记本上运行50-300个并发请求。
听起来是一个很好的Twisted应用程序。这里有一些web-related examples,包括如何download a web page。这里有一个关于database connections with Twisted的相关问题。
注意Twisted不依赖线程同时执行多个任务。相反,它采用cooperative multitasking方法——主脚本启动reactor,reactor调用您设置的函数。在反应器可以继续工作之前,您的函数必须将控制返回到反应器。
如果很多确实比您可能希望使用异步io而不是线程要多。
requests+gevent=grequests
GRequests允许您使用带有Gevent的请求来轻松地生成异步HTTP请求。
相关问题 更多 >
编程相关推荐