Python 具有独立数据的回调链,与该链无关

Python 具有独立数据的回调链,与该链无关,python,twisted,Python,Twisted,我试图在twisted中执行一个简单的回调序列。我的想法是登录到一个服务,当登录成功后,我开始发送命令。这是我的代码: from twisted.internet import reactor, defer class MyService: def __init__ (self): self.handle = None def login(self): def onConnect(handle):

我试图在twisted中执行一个简单的回调序列。我的想法是登录到一个服务,当登录成功后,我开始发送命令。这是我的代码:

from   twisted.internet          import reactor, defer

class MyService:

    def __init__ (self):
        self.handle = None

    def login(self):
        def onConnect(handle):
            self.handle = handle
            return
        df = defer.Deferred().addCallback(onConnect)
        reactor.callLater(2, df.callback, "dummyhandle")
        return df

    def sendCommand(self, command):
        def onResult(result):
            print result
            return result

        if self.handle == None:
            print "Not logged in"
            return
        else:
            df = defer.Deferred().addCallback(onResult, result ="xxx")
        return df

my = MyService ()

my.login().addCallback(my.sendCommand, command = "format")
reactor.run()
运行该代码将生成以下stacktrace:

Unhandled error in Deferred: Traceback (most recent call last):   File "/usr/lib/python2.6/dist-packages/twisted/internet/base.py", line 1179, in mainLoop
    self.runUntilCurrent()   File "/usr/lib/python2.6/dist-packages/twisted/internet/base.py", line 778, in runUntilCurrent
    call.func(*call.args, **call.kw)   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 280, in callback
    self._startRunCallbacks(result)   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 354, in _startRunCallbacks
    self._runCallbacks()
--- <exception caught here> ---   File "/usr/lib/python2.6/dist-packages/twisted/internet/defer.py", line 371, in _runCallbacks
    self.result = callback(self.result, *args, **kw) exceptions.TypeError: sendCommand() got multiple values for keyword argument 'command'
延迟:回溯(最后一次调用):文件“/usr/lib/python2.6/dist packages/twisted/internet/base.py”,第1179行,mainLoop中未处理的错误 self.rununtlcurrent()文件“/usr/lib/python2.6/dist packages/twisted/internet/base.py”,第778行,在rununtlcurrent中 call.func(*call.args,**call.kw)文件“/usr/lib/python2.6/dist packages/twisted/internet/defer.py”,第280行,在callback中 self._startRunCallbacks(结果)文件“/usr/lib/python2.6/dist packages/twisted/internet/defer.py”,第354行,在_startRunCallbacks中 self.\u runCallbacks() ------文件“/usr/lib/python2.6/dist-packages/twisted/internet/defer.py”,第371行,在runCallbacks中 self.result=回调(self.result,*args,**kw)异常。TypeError:sendCommand()为关键字参数“command”获取了多个值 这里重要的是sendCommand不需要登录的结果,而是需要不同的数据。它需要登录已经完成(这就是为什么我希望它在回调链中),但它对登录的结果不感兴趣(只要它不是一个错误,无论如何都会在错误链中处理)


我在这里做错了什么?

很简单,处理程序的第一个参数必须是result:

def sendCommand(self, in_result, command):
    do_the_stuff