当前位置:  开发笔记 > 编程语言 > 正文

Python:url内容的简单异步下载?

如何解决《Python:url内容的简单异步下载?》经验,为你挑选了1个好方法。

我有一个web.py服务器响应各种用户请求.其中一个请求涉及下载和分析一系列网页.

有没有一种简单的方法在web.py中设置基于异步/回调的url下载机制?资源使用率低是特别重要的,因为每个用户发起的请求可能导致下载多个页面.

流程看起来像:

用户请求 - > web.py - >并行或异步下载10页 - >分析内容,返回结果

我认识到Twisted是一个很好的方法,但我已经在web.py中了,所以我对web.py中的内容特别感兴趣.



1> Paweł Prażak..:

这是一段有趣的代码.我自己没有使用它,但它看起来不错;)

https://github.com/facebook/tornado/blob/master/tornado/httpclient.py

低级AsyncHTTPClient:

"使用pycurl支持的非阻塞HTTP客户端.示例用法:"

import ioloop

def handle_request(response):
    if response.error:
        print "Error:", response.error
    else:
        print response.body
    ioloop.IOLoop.instance().stop()

http_client = httpclient.AsyncHTTPClient()
http_client.fetch("http://www.google.com/", handle_request)
ioloop.IOLoop.instance().start()

"fetch()可以采用字符串URL或HTTPRequest实例,它提供了更多选项,例如执行POST/PUT/DELETE请求.

AsyncHTTPClient构造函数的关键字参数max_clients确定可以在每个IOLoop上并行执行的最大并发fetch()操作数."

还有一个新的实现正在进行中:https: //github.com/facebook/tornado/blob/master/tornado/simple_httpclient.py "没有外部依赖关系的非阻塞HTTP客户端....这个类仍在开发中尚未推荐用于生产用途."

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有