Asynchronous HTTP client
Lie Ryan
lie.1296 at gmail.com
Sun Mar 7 08:12:23 EST 2010
On 03/07/2010 05:53 PM, Ping wrote:
> Hi,
>
> I'm trying to find a way to create an asynchronous HTTP client so I
> can get responses from web servers in a way like
>
> async_http_open('http://example.com/', callback_func)
> # immediately continues, and callback_func is called with response
> as arg when it is ready
>
> It seems twisted can do it, but I hesitate to bring in such a big
> package as a dependency because my client should be light. Asyncore
> and asynchat are lighter but they don't speak HTTP. The asynchttp
> project on sourceforge is a fusion between asynchat and httplib, but
> it hasn't been updated since 2001 and is seriously out of sync with
> httplib.
>
> I'd appreciate it if anyone can shed some lights on this.
If you want something quite lightweight, you can spawn a thread for the
call:
import threading, urllib
class AsyncOpen(threading.Thread):
def __init__(self, url, callback):
super(AsyncOpen, self).__init__()
self.url = url
self.callback = callback
def run(self):
# of course change urllib to httplib-something-something
content = urllib.urlopen(self.url).read()
self.callback(content)
def asyncopen(url, callback):
AsyncOpen(url, callback).start()
def cb(content):
print content
asyncopen('http://www.google.com', cb)
More information about the Python-list
mailing list