[Twisted-Python] xmlrpc function return message to client asynchronously

Tristan Seligmann mithrandi at mithrandi.net
Thu Jan 19 10:02:50 MST 2012


On Thu, Jan 19, 2012 at 6:41 PM, Hanusz L. <Hanusz at aegtranzcom.com> wrote:
>
> I'd like to create a xmlrpc function get_message with the following characteristic :
>  - If the server doesn't have any message to send the client, the server will answer with a timeout after 60s (and the client can retry)
>  - If the server has a message to send to the client, the answer is sent directly
>
> To do that, can I do the following:
> - create a deferred in the xmlrpc function with a calllater of 60s and keep a reference to this deferred in the factory
>  * If the server has no message to send, the deferred will be called by the reactor and answer a timeout
>  * If the server has a message to send, it will call the deferred in his own code (with a parameter ?) before the reactor and answer the message.

The object returned by callLater() provides the IDelayedCall[1]
interface. If you keep a reference to this object as well as the
deferred, then you can cancel the call when you return a response by
calling the .cancel() method.

[1] http://twistedmatrix.com/documents/current/api/twisted.internet.interfaces.IDelayedCall.html
-- 
mithrandi, i Ainil en-Balandor, a faer Ambar




More information about the Twisted-Python mailing list