[Python-Dev] Synchronous and Asynchronous servers in the standard
library
James Y Knight
foom at fuhm.net
Wed Nov 10 18:39:45 CET 2004
On Nov 10, 2004, at 2:36 AM, Martin v. Löwis wrote:
> I fail to see the problem. If the file object is replaced/rewrapped
> into a SSL object, the base class can continue to use
> read/write/send/recv - if only the SSL object supported the same
> operations (which it really should if switching from plain sockets
> to SSL sockets is a common task) (and you seem to be suggesting that
> as a good strategy).
It can't work completely transparently; SSL has some more complicated
requirements. I don't think it's really useful to go into SSL's inner
workings here, but, a major issue is that reading from a socket can
sometimes require writing to it and vice versa.
> My point here is that you just cannot use the very same class for
> SMTP, and SMTP+STARTTLS - you indicated that a subclass must be
> created. This was my original point: you cannot instantiate the
> baseclass for use with TLS, as the baseclass does not implement
> the cmd_STARTTLS method.
False. STARTTLS is part of the SMTP protocol and is always implemented,
as shown in JP's message. Therefore, there is no subclass, STARTTLS is
part of the main SMTP class.
But, the real point is that you can use the same class for SMTP and
SMTP-over-ssl, which is fortunate, because you need to switch to the
over-ssl implementation half way through the connection.
This discussion really seems useless to me. Asyncore certainly has some
serious deficiencies, and arguing each and every one of them is okay
because alternatively "nobody needs that feature" or "If X worked in
some way (which it doesn't), then everything would be fine" just seems
silly. I've only started developing with Twisted fairly recently, so I
don't know the entire history of its development, but I'm pretty sure
it wasn't started just for fun...
James
More information about the Python-Dev
mailing list