gpt4 book ai didi

python - 使用 asyncore 读取网站

转载 作者:太空狗 更新时间:2023-10-29 21:25:16 27 4
gpt4 key购买 nike

我想异步阅读网站,据我所知,urllib 无法做到这一点。现在我尝试使用普通套接字进行阅读,但 HTTP 让我很痛苦。我遇到了各种时髦的编码,例如 transfer-encoding: chunked,必须手动解析所有这些东西,我觉得现在编码 C,而不是 python。

有没有像 URLLib 这样更好的异步方式?我真的不想重新实现整个 HTTP 规范,因为之前都已经完成了。

Twisted 目前不是一个选项。

问候,

汤姆

最佳答案

您可以自己实现一个异步调用。对于每个调用,启动一个新线程(或尝试从池中获取一个线程)并使用回调来处理它。

你可以用装饰器很好地做到这一点:

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

关于python - 使用 asyncore 读取网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1367453/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com