我想异步阅读一个网站,据我所知,这是不可能的 urllib 。现在我尝试使用普通套接字进行阅读,但是 HTTP 给我带来了麻烦。
我遇到了各种时髦的编码,例如传输编码:分块,必须手动解析所有这些东西,我现在想编码 C,而不是 python。
难道没有像 URLLib 这样更好的异步方式吗?我真的不想重新实现整个 HTTP 规范,因为以前都已经完成了。
目前还不能选择 Twisted。
问候,
Tom
您可以自己实现异步调用。对于每个调用,启动一个新线程(或尝试从池中获取一个线程)并使用回调来处理它。
你可以用装饰器很好地做到这一点:
def threaded(callback=lambda *args, **kwargs: None, daemonic=False):
"""Decorate a function to run in its own thread and report the result
by calling callback with it."""
def innerDecorator(func):
def inner(*args, **kwargs):
target = lambda: callback(func(*args, **kwargs))
t = threading.Thread(target=target)
t.setDaemon(daemonic)
t.start()
return inner
return innerDecorator
@threaded()
def get_webpage(url):
data = urllib.urlopen(url).read()
print data
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)