asyncore.poll() question

chad cdalten at gmail.com
Sat Oct 16 23:20:13 EDT 2010


On Oct 16, 11:02 am, Felipe Bastos Nunes <felipe.bast... at gmail.com>
wrote:
> You edited the source of asyncore.py puttin the print statments and
> nothing happend? It should work as the method is called as the page
> you posted said.
>
> 2010/10/16, chad <cdal... at gmail.com>:
>
>
>
> > On Oct 16, 6:47 am, Lucasm <lordlucr... at gmail.com> wrote:
> >> On 16 Okt, 15:31, chad <cdal... at gmail.com> wrote:
>
> >> > 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
>
> >> Hi,
>
> >> You can find the file in your Python directory, in my case /usr/lib/
> >> Python2.6/asyncore.py. You should delete the .pyc file to make sure it
> >> is recompiled. And you will need root access :).
>
> >> Lucas
>
> > I just did that...
>
> > [root at localhost python2.6]# ls -al asyncore.py
> > -rw-r--r-- 1 root root 19262 Oct 16 10:22 asyncore.py
> > [root at localhost python2.6]# ls -al asyncore.pyc
> > -rw-r--r-- 1 root root 16773 Oct 16 10:26 asyncore.pyc
> > [root at localhost python2.6]# ls -al asyncore.pyo
> > -rw-r--r-- 1 root root 16773 Oct 16 10:42 asyncore.pyo
> > [root at localhost python2.6]#
>
> > And nothing happened. Ideas?
> > --

One last question.

Why does the author have both import sys and import urlparse below
__main__? Ie

if __name__ == '__main__':
    import sys
    import urlparse

Why not just put them at the top with the rest?

Chad




More information about the Python-list mailing list