asyncore.poll() question

Von vontio at gmail.com
Sun Oct 17 09:43:50 CEST 2010


The urlparse module is load only when this module run as main entry.
Its for test purpose of modules.


2010/10/17, chad <cdalten at gmail.com>:
> 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
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>



More information about the Python-list mailing list