[Twisted-Python] How to return a meaningful response to an AMP command when deferreds are involved?
Nathan
nathan.stocks at gmail.com
Wed Apr 2 13:05:49 MDT 2008
On my AMP server I'm using twisted.enterprise to query a postgres
database and do inserts. I'd like to return whether the insert
succeeded or failed as the response to the AMP responder function --
is there an established pattern for doing things like that?
So basically, with the amp command:
class MyInsert(amp.Command):
arguments = [('an_int',amp.Integer())]
response = [('succeeded',amp.Boolean())]
....on the client I do:
amp_client.callRemote(MyInsert, an_int)
...on the server:
@MyInsert.responder
def my_insert(self, an_int):
qry_def = self.dbpool.runOperation("insert into mytable the_number
values (%d);" % an_int)
qry_def.addCallback(self._my_insert_ok)
qry_def.addErrback(self._my_insert_err)
# Here's the AMP response...but I don't KNOW whether it succeeded yet!
# ...but I've _got_ to return a response dict from this function or
AMP gives an error!
return {'succeeded':True}
def _my_insert_ok(self, none_object):
print "It succeeded"
def _my_insert_err(self, failure_object):
print "It failed with: %s" % failure_object.getErrorMessage()
~ Nathan
More information about the Twisted-Python
mailing list