[Twisted-Python] newbie confusion - puzzling reactor response
mebly5343 at gmail.com
Wed Feb 10 14:44:12 EST 2010
Try removing the "reactor.addReader(self)" call from "__init__" and see what
happens. That call is made when "r" is created in
r = inputFile('/etc/group')
and immediately after that you are calling
So, you are calling reactor.addReader() twice on the same instance.
On Wed, Feb 10, 2010 at 2:24 PM, K. Richard Pixley <rich at noir.com> wrote:
> I don't think so. I believe the reactor is actually added during the
> import. (I learned this as I discovered that reactors can't be restarted,
> which means you have to manually create a new one as a fixture for simple
> unittest work.)
> I looked through the code and there's a call in the reactor to fileno
> immediately after the call to doRead. It seems to be attempting to check
> for file descriptors which broke during the read, but I think that's a
> mistake. (Or at least, I'm confused about how else to do it). Seems to me
> that the only time my object has control in order to remove itself is during
> doRead. So I'm thinking that either...
> a) there's some other way to close out my object that I just haven't
> discovered or
> b) the code which checks the file descriptor, (which may have been closed),
> after doRead is doing so mistakenly.
> For now, in my real code, I'm just leaving the file descriptor. But I'd
> like to know how this is intended to be used.
> --rich (still a newbie)
> Mark Bailey wrote:
> Aren't you adding two readers? One is added in the __init__ method of
> inputFile, the other in the test code.
> I'm also a newbie so maybe I'm equally confused...
> On Tue, Feb 9, 2010 at 8:47 PM, K. Richard Pixley <rich at noir.com> wrote:
>> I'm confused be the response I get to the attached program.
>> In a nutshell, I'm building a reader, attaching it with addReader, later
>> removing it with removeReader. And I'm getting this:
>> time python test_reactor.py
>> Traceback (most recent call last):
>> Failure: twisted.internet.error.ConnectionFdescWentAway: Uh:
>> Filedescriptor went away.
>> Which seems to be telling me that I don't know as much yet as I'd hoped.
>> Why would the reactor care about a closed file descriptor that isn't even
>> in it's interest set?
>> #!/usr/bin/env python
>> # -*- coding: utf-8 -*-
>> import os
>> from zope.interface import implements
>> from twisted.internet import reactor
>> from twisted.internet.interfaces import IReadDescriptor
>> class inputFile(object):
>> def __init__(self, filename):
>> self.filename = filename
>> self.filedes = os.open(filename, os.O_RDONLY | os.O_NONBLOCK)
>> def fileno(self):
>> return self.filedes
>> def connectionLost(self, reason):
>> raise reason
>> def logPrefix(self):
>> return 'inputFile'
>> def doRead(self):
>> self.filedes = -1
>> if __name__ == '__main__':
>> r = inputFile('/etc/group')
>> Twisted-Python mailing list
>> Twisted-Python at twistedmatrix.com
> Twisted-Python mailing listTwisted-Python at twistedmatrix.comhttp://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Twisted-Python