[Twisted-Python] How to determine whether transport.write() succeed?

Glyph glyph at twistedmatrix.com
Mon Apr 1 03:49:41 EDT 2013


On Mar 31, 2013, at 6:09 PM, Todong Ma <gbstack08 at gmail.com> wrote:

> I wrote a simple client and server to get system information (e.g. cpu, memory, etc.)
> Client send 'cpu' to the server, then server will return cpu's information to client.
> 
> Now client send multiple commands to server one time, e.g. cpu, memory, database, hard disk. But sometimes server couldn't receive some type information (e.g. cpu, database), and the missed information type is not fixed every time.
> 
> So I want client to check whether ITransport.write() sends message to server successfully. If failed, client will resend the message to server.

It's a good thing that write() doesn't convey information about send() succeeding so you can't trust it :).  You can't rely on send() succeeding to convey this information: send() can succeed but all that means is that data moved from your application into your kernel.

What you want to do is to have an application-level acknowledgement of the data that was sent.

AMP will provide this for you automatically; when the Deferred returned by callRemote fires, the other end has received and acknowledged the information.

-glyph

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://twistedmatrix.com/pipermail/twisted-python/attachments/20130401/4a28897b/attachment.htm 


More information about the Twisted-Python mailing list