asyncore.poll() question

chad cdalten at gmail.com
Sat Oct 16 09:31:52 EDT 2010


At the following url..

http://www.nightmare.com/medusa/programming.html

The author has the following code for a simple HTTP client

#!/usr/bin/python

import asyncore
import socket
import string

class http_client (asyncore.dispatcher):

    def __init__ (self, host, path):
        asyncore.dispatcher.__init__ (self)
        self.path = path
        self.create_socket (socket.AF_INET, socket.SOCK_STREAM)
        self.connect ((host, 80))

    def handle_connect (self):
        self.send ('GET %s HTTP/1.0\r\n\r\n' % self.path)

    def handle_read (self):
        data = self.recv (8192)
        print data

    def handle_write (self):
        pass

if __name__ == '__main__':
    import sys
    import urlparse
    for url in sys.argv[1:]:
        parts = urlparse.urlparse (url)
        if parts[0] != 'http':
            raise ValueError, "HTTP URL's only, please"
        else:
            host = parts[1]
            path = parts[2]
            http_client (host, path)
    asyncore.loop()


Right after that, the author states the following...

" A really good way to understand select() is to put a print statement
into the asyncore.poll() function:

        [...]
        (r,w,e) = select.select (r,w,e, timeout)
        print '---'
        print 'read', r
        print 'write', w
        [...]

Each time through the loop you will see which channels have fired
which events.
"

How the heck do I modify the code put the print statement into the
asyncore.poll() function?

Chad



More information about the Python-list mailing list