[Twisted-Python] Question about writing a server that accepts multiple clients with independent processing

Gabriel Rossetti mailing_lists at evotex.ch
Thu Feb 21 05:07:24 EST 2008


Stephen Thorne wrote:
> On 21/02/2008, at 7:31 PM, Gabriel Rossetti wrote:
>>
>> I have done this so far using Twisted :
>>
>> 1) created a protocol (the one that would be executed in a separate 
>> thread in the example above)
>> 2) created a factory and listen for incoming connections.
>>
>> This works great if I have one connection, but I need multiple 
>> connections being processed in parallel (simulated parallelism I guess)
>>
>
> Twisted handles the multiple connections by being event based. When a 
> networking event occurs, you can receive notifications of those events.
>
> For instance:
>
> A new connection is established -> Factory is told, and has the 
> ability to create and associate a protocol instance with that connection.
> Data comes over a connection -> The Protocol object is told via the 
> dataReceived method.
> A connection is closed -> The Protocol is told via there 
> connectionLost method.
>
> Each time these methods are called, you are expected to return from 
> them, not do things in while loops. To get more data, you just return 
> control to the event loop (aka reactor.run()) and wait for futher 
> notifications.
>
> In order to send data, you send it to 
> protocol.transport.write(allmydata), and the event loop takes the 
> responsibility of sending that data to the other end of the connection.
>
> I hope that helps you with the concepts involved here. I suggest 
> playing around with the Echo server example if you want a readable 
> example you can poke and prod.
>
> Regards,
> Stephen Thorne
>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
Thank you Stephan, ok, but is an instance of a protocol created for 
every connection? I tried to add data received  by the protocol to a 
list, and if I get multiple connections that list is filled with all the 
connection's data, like if only one instance existed.

Regards,
Gabriel Rossetti




More information about the Twisted-Python mailing list