[Twisted-Python] Sending disconnect messages to clients

L. Daniel Burr ldanielburr at me.com
Tue Mar 22 13:49:46 MDT 2016


Hi Chris,

On March 22, 2016 at 2:42:14 PM, Chris Norman (chris.norman2 at googlemail.com) wrote:

Hi all, 
I'm sure I asked this question before, but I can't find any answers on 
google, and I've changed my work flow a bit now, so thought it was worth 
re-asking. 

So on my server's protocol, I have a send method. This allows me to pass 
arguments which get sent off to the client in the right format. The send 
method looks something like this: 

def send(self, command, **kwargs): 
"""Cause the client to issue getattr(connection, command)(**kwargs). 
If disconnect evaluates to True, disconnect the client after the message 
is sent.""" 
disconnect = kwargs.get('disconnect', False) 
try: 
del kwargs['disconnect'] 
except KeyError: 
pass # Argument not found. 
d = defer.Deferred() 
d.addCallback(self.prepare_command) Convert the command and kwargs to 
json. 
d.addCallback(self.deferred_write) # Write the json to the transport. 
if disconnect: 
d.addCallback(self.deferred_disconnect) # Issue 
self.transport.loseConnection(). 
You are disconnecting right here, without waiting for your Deferred to fire.  It might make better sense to add the call the self.transport.loseConnection() to your Deferred’s callback chain.

Hope this helps,

Daniel
--
L. Daniel Burr
ldanielburr at me.com
(312) 656-8387
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20160322/1995721b/attachment-0002.html>


More information about the Twisted-Python mailing list