[Twisted-Python] Learning Twisted

Jp Calderone exarkun at divmod.com
Sun May 16 18:13:55 EDT 2004


Jason Diamond wrote:

> Sorry for the length of this post but I learn best by trying to
> explain what I'm learning (even if nobody's listening). Twisted seems
> very cool but also *huge* and unlike any framework I've used before so
> I thought I'd post my first experiences with it in the hopes that I
> could be corrected where needed (and maybe even help people other new
> like me).

I'd like to repeat what Glyph said.  This is great feedback, I'd love to =

see more of it :)

>
> [snip]
>
> This is what I came up with:
>
> from twisted.internet import reactor, protocol
> from twisted.protocols import imap4
>
> class MyIMAP4Client(imap4.IMAP4Client):
>
>    def connectionMade(self):
>        imap4.IMAP4Client.connectionMade(self)
>        print "connectionMade"

  The above works (as you noticed ;) but isn't quite as good as hooking =

into the "serverGreeting" method, which is called after the IMAP4 server =

sends its initial message (I realize this isn't well documented).

>
> [snip]
>
> Note that this is *not* a method of the MyIMAP4Client class. But it
> worked! I got this printed to the console:
>
> connectionMade
> loginCallback: ([], 'OK LOGIN Ok.')
>
> I don't know, however, what the tuple represents. What's that empty
> list? In a perfect world, would this be explained in the IMAP4Client
> documentation? (I'm assuming that every callback would be different.)
>
  The callback value here is something of an implementation detail.  =

Deferreds (somewhat informally) often fall into one of two categories: =

those which will eventually be called back with an interesting value =

which is necessary for further computations, and those which will =

eventually be called back with a not-so-interesting value which only =

serves to indicate that the desired operation has completed.  login() =

falls into the second category.

> [snip]
>
> Am I correct in assuming that the IMAP4Client documentation needs some
> buffing up? (Maybe I can help with that.) I didn't look at any source
> code (other than in the HOWTOs) in implementing this so I think that's
> a good sign. But as I mentioned above, I'm not clear on how I know
> what the signature for my callbacks should be or what the parameters
> to those callbacks mean in some cases.

  Yep.  More documentation would be great.  The actual signature for =

callbacks is easy.  It's always a callable that takes one argument (by =

the way, this is why your code worked with both free functions and =

methods - it doesn't matter what kind of callable you use, as long as it =

takes one argument).  Further documentation about the specifics of what =

that one parameter means is definitely needed, though.

> [snip]
>
> Thanks for reading this far!
>
  Thanks for writing!

  Jp





More information about the Twisted-Python mailing list