Once Itamar mentioned closing connections, then I realized I needed to add:
d.addCallback(lambda _: factory.disconnect())
The descriptors are now cleaned up.
An interesting point is that I cannot find any documentation that
actually uses: factory.disconnect()
Did I miss it?
john
----- Original Message -----
From: twisted-python-request@twistedmatrix.com
Date: Thu, 22 Apr 2004 12:00:05 -0600
To: twisted-python@twistedmatrix.com
Subject: Twisted-Python Digest, Vol 1, Issue 1218
Send Twisted-Python mailing list submissions to
twisted-python@twistedmatrix.com
To subscribe or unsubscribe via the World Wide Web, visit
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
or, via email, send a message with subject or body 'help' to
twisted-python-request@twistedmatrix.com
You can reach the person managing the list at
twisted-python-owner@twistedmatrix.com
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Twisted-Python digest..."
Today's Topics:
1. Re: Transporting pb.Copyable classes? (exarkun@divmod.com)
2. Re: Transporting pb.Copyable classes? (Jasper Phillips)
3. Unwinding the Twisted Web (a progress report) (David Reid)
4. Re: Unwinding the Twisted Web (a progress report)
(Itamar Shtull-Trauring)
5. how to have a server talk to a server (john nielsen)
6. Re: how to have a server talk to a server (Eric Mangold)
----------------------------------------------------------------------
Message: 1
Date: Wed, 21 Apr 2004 18:53:37 GMT
From: <exarkun@divmod.com>
Subject: Re: [Twisted-Python] Transporting pb.Copyable classes?
To: "Twisted discussion stuff" <twisted-python@twistedmatrix.com>
Message-ID: <20040421185337.9235.1895087205.divmod.quotient.13@ohm>
Content-Type: text/plain
On Wed, 21 Apr 2004 09:57:47 -0700 (PDT), Jasper Phillips <jasper@peak.org> wrote:
[snip]
All this seems to me like frantic contortion to avoid a bug in jelly.
Shouldn't it be able to translate passed class objects into the remote
version, provided they have been properly registered? Is there some reason
why not that I am missing?
Indeed. While I would do this differently, jelly should certainly be able to handle your approach. Let's get into specifics, shall we? Here's some code:
from twisted.spread import jelly
class Foo: pass
...
f = Foo()
f.bar = Foo
jelly.jelly(f)
['__main__.Foo', ['dictionary', ['bar', ['class', '__main__.Foo']]]]
So far, so good.
from twisted.spread import pb
class Foo(pb.Copyable):
... pass
...
f = Foo()
f.bar = Foo
jelly.jelly(f)
['__main__.Foo', ['dictionary', ['bar', ['class', '__main__.Foo']]]]
Hmm, that works too. I expected it not to, actually. I suppose something you're doing with globalSecurity or setCopierForClassTree() may be mucking things up.
I appreciate the code suggestions, but basicaly I just want to know whether
this is expected behavior, or whether I should post a demonstrative test
case and suggest a fix.
Posting a demonstrative test case would be excellent :) I suspect there is no bug in jelly, just a disagreement in expectations which can easily be resolved once there is a concrete example to talk about.
Jp
------------------------------
Message: 2
Date: Wed, 21 Apr 2004 14:03:47 -0700 (PDT)
From: Jasper Phillips <jasper@peak.org>
Subject: Re: [Twisted-Python] Transporting pb.Copyable classes?
To: Twisted discussion stuff <twisted-python@twistedmatrix.com>
Message-ID: <Pine.LNX.4.53.0404211301540.9678@a.shell.peak.org>
Content-Type: TEXT/PLAIN; charset=US-ASCII
On Wed, 21 Apr 2004 exarkun@divmod.com wrote:
On Wed, 21 Apr 2004 09:57:47 -0700 (PDT), Jasper Phillips <jasper@peak.org> wrote:
All this seems to me like frantic contortion to avoid a bug in jelly.
Shouldn't it be able to translate passed class objects into the remote
version, provided they have been properly registered? Is there some reason
why not that I am missing?
Indeed. While I would do this differently, jelly should certainly be
able to handle your approach. Let's get into specifics, shall we?
Here's some code:
I may end up doing it differently, but one thing at a time! I'm in the
midst of upgrading to new cred, and already have plenty of scope with which
to hang myself. ;-)
I'm not particularily attached to the static class approach, it just
happened to be what came to mind when prototyping. I'm definitely curious
now what you would do... I've been programming in a vacuum for quite a
while. :-(
from twisted.spread import jelly
class Foo: pass
...
f = Foo()
f.bar = Foo
jelly.jelly(f)
['__main__.Foo', ['dictionary', ['bar', ['class', '__main__.Foo']]]]
So far, so good.
from twisted.spread import pb
class Foo(pb.Copyable):
... pass
...
f = Foo()
f.bar = Foo
jelly.jelly(f)
['__main__.Foo', ['dictionary', ['bar', ['class', '__main__.Foo']]]]
Hmm, that works too. I expected it not to, actually. I suppose
something you're doing with globalSecurity or setCopierForClassTree()
may be mucking things up.
This test case doesn't seem quite right... Why doesn't it fail since Foo
hasn't been registered? Hmmm, looks like jelly()'s taster arg defaults to
DummySecurityOptions()...
What about registering Foo, and then calling with jelly.globalSecurity?:
---- Code ----
from twisted.spread import jelly, pb
class Foo( pb.Copyable ): pass
jelly.setUnjellyableForClass( Foo, Foo )
#jelly.globalSecurity.allowInstancesOf( Foo ) # uncomment to fix
if __name__ == '__main__':
f = Foo()
f.bar = Foo
print jelly.jelly( f, taster=jelly.globalSecurity )
---- End Code ----
This gives the Insecure Jelly exception I'm seeing, from jelly.py:482...
However, comment out `f.bar = Foo` or uncomment allowInstancesOf() and it
works.
Oh, and I'm using twisted 1.2 and python 2.3.3.
[snip]
Posting a demonstrative test case would be excellent :) I suspect there
is no bug in jelly, just a disagreement in expectations which can easily
be resolved once there is a concrete example to talk about.
Is this a decent example? As for a fix, it looks like the solution is there
in SecurityOptions.allowsInstancesOf(), but that it's just not exposed.
-Jasper
------------------------------
Message: 3
Date: Thu, 22 Apr 2004 03:56:47 -0700
From: David Reid <dreid@dreid.org>
Subject: [Twisted-Python] Unwinding the Twisted Web (a progress
report)
To: twisted-python <twisted-python@twistedmatrix.com>, twisted-web
<twisted-web@twistedmatrix.com>
Message-ID: <1082631407.28634.20.camel@localhost>
Content-Type: text/plain
I had been trying to straighten out the model for the split since my
first post to twisted-web regarding it. Now that radix, and exarkun
have split twisted.news out of the core codebase as "lowdown". Since
then I have begun work on my own source tree of twisted.web, the module
has been split as "unwound" which is my proposed name as mentioned in
the numerous naming threads (to be installed as tmlabs.unwound if
desired.)
So far I've done the following:
* duplicate the source tree renaming the toplevel module and changing
the imports accordingly.
* run the tests (everything passes just as it does in twisted.web)
* removed modules that were deprecated BY woven, and added a
Deprecation Warning message to unwound.woven.__init__
If there are no complaints about this I'm asking someone (like radix) to
help me complete the rest of the steps necessary to make this the
official split so i can start working on changes and enhancements. The
things I can't do on my own, atleast not as part of twistedmatrix.com is
setup the SVN repo and the project page.
Also it appears if radix and exarkun did not solve (or atleast did not
implmenet a solution for) the tap naming conflicts. I.E. if lowdown or
tmlabs.lowdown is going to use mktap news or mktap lowdown instead.
Other than that, Unwound is currently a useable tree of twisted.web At
revision 10601.
(I'm open to changing the name to either tmlabs.web or some cute/catchy
name other than 'unwound', but ultimately I think that is a policy
decision that falls on the core twisted devs.)
--
David Reid
Claim to fame: "I actually wrote code that used twisted.web.webwidgets!"
------------------------------
Message: 4
Date: Thu, 22 Apr 2004 11:21:46 -0400
From: Itamar Shtull-Trauring <itamar@itamarst.org>
Subject: Re: [Twisted-Python] Unwinding the Twisted Web (a progress
report)
To: Twisted discussion stuff <twisted-python@twistedmatrix.com>
Cc: twisted-web@twistedmatrix.com
Message-ID: <1082647306.27964.10.camel@sheriffpony>
Content-Type: text/plain
On Thu, 2004-04-22 at 06:56, David Reid wrote:
So far I've done the following:
* duplicate the source tree renaming the toplevel module and changing
the imports accordingly.
From what I've gathered from talking to Donovan and James this is *not*
how the new twisted.web version is going to be developed. Donovan said
he'd write out a roadmap for the mailing list after talking it over.
--
Itamar Shtull-Trauring http://itamarst.org
Looking for a job -- http://itamarst.org/resume.html
------------------------------
Message: 5
Date: Thu, 22 Apr 2004 10:46:30 -0500
From: "john nielsen" <jn@who.net>
Subject: [Twisted-Python] how to have a server talk to a server
To: twisted-python@twistedmatrix.com
Message-ID: <20040422154630.2989779004F@ws1-14.us4.outblaze.com>
Content-Type: text/plain; charset="iso-8859-1"
I see some examples where you have a client call pb.PBClientFactory to talk to a server which called pb.PBServerFactory.
What if you have 2 servers (both running pb.PBServerFactory) that accept clients and also want to talk to each other? Would the first server also make a pb.PBClientFactory to talk to the second server (seems like you would have to be careful to not leak descriptors since the reactor would never close).
There's probably a standard way to do it, that I just missed.
Thanks for any help,
john
--
___________________________________________________________
Sign-up for Ads Free at Mail.com
http://promo.mail.com/adsfreejump.htm
------------------------------
Message: 6
Date: Thu, 22 Apr 2004 11:38:55 -0600
From: Eric Mangold <teratorn@world-net.net>
Subject: [Twisted-Python] Re: how to have a server talk to a server
To: Twisted discussion stuff <twisted-python@twistedmatrix.com>
Message-ID: <opr6vcm5nfi4eeqj@mail.oaktech.net>
Content-Type: text/plain; format=flowed; charset=iso-8859-1
On Thu, 22 Apr 2004 10:46:30 -0500, john nielsen <jn@who.net> wrote:
I see some examples where you have a client call pb.PBClientFactory to
talk to a server which called pb.PBServerFactory.
What if you have 2 servers (both running pb.PBServerFactory) that accept
clients and also want to talk to each other? Would the first server
also make a pb.PBClientFactory to talk to the second server
Yes.
(seems like you would have to be careful to not leak descriptors since
the reactor would never close).
Not sure what you mean by that.
-Eric
------------------------------
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
End of Twisted-Python Digest, Vol 1, Issue 1218
***********************************************