[Twisted-Python] Server with several outgoing connections
Roland Hedberg
roland.hedberg at adm.umu.se
Thu Nov 4 02:37:53 MST 2004
Hi!
I'm new to Twisted and I have tried to read and understand the
intricate sides of it.
And have found as so many other that the learning curve pretty steep,
especially I guess if one comes from being a C programmer :-)
Anyway, this is my problem:
I'm building a system that consists of a number of nodes, each node
acting as a receiver and transmitter of messages. The protocol used
between the nodes might be a message passing system like xmpp or
something else. The number of nodes are dynamic and might change at any
time. Plus there is no way by which you can know when the system is
started how many nodes there will be. Also nodes might receive messages
from any number of nodes and be expected to transmit the messages to
several nodes.
Writing the 'server' part of a node is easy, plenty of examples of that
exists on the net.
Writing the 'client' side is not so easy and here I guess my C legacy
is hampering me.
So I'd like someone to give me, or point me, to an example on how to
dynamically create new connections to receivers. I first though these
connections should be shortlived that is 'open the connection, send the
message, receive the ACK and close the connection' but now I think it
might be wiser to keep the connections as long as possible. That is,
until that receiver disappears.
Another side of this is that the influx of messages might be higher
than the possible output, that is each node has to keep queues for
messages not yet sent and messages sent but not ack'ed.
It might also happen that recivers of messages are not accessible in
which case the message has to be queue until the receiver pops up
again. The system is not allowed to drop messages.
Note, that each incomming message might have several receivers, so one
incomming message might end up in the sendqueue of several receivers.
And here in lies one of the problems, I guess I have to keep a
'centrally' managed queue, that should then be notified on the change
of status of a message on route to a recevier. How should I implement
this ?
--Roland
More information about the Twisted-Python
mailing list