Asynchronous HTTP client

Lie Ryan lie.1296 at
Sun Mar 7 14:12:23 CET 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('', 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

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()

def asyncopen(url, callback):
    AsyncOpen(url, callback).start()

def cb(content):
    print content

asyncopen('', cb)

More information about the Python-list mailing list