首页 > 解决方案 > 如何将参数从 Twisted 中的 deferred 添加到 addTimeout 函数

问题描述

我在 deferred.addTimeout 中有一些问题。我想以与将参数传递给 deferred.addCallback 相同的方式将一些参数传递给该函数,但我不能。可以帮助 Twisted 库发生变化吗?请帮帮我,卢克

标签: pythontwisted

解决方案


使用内置部分将参数传递给函数。我假设您希望将 paramsonTimeoutCancel函数传递给Deferred.addTimeout?

from functools import partial
from twisted.internet import defer, task

def callback_timeout(failure, timeout, **kw):
    print('params: {0}'.format(kw))

@defer.inlineCallbacks
def main(reactor):
    d = defer.Deferred()
    # use partials to set params in a function
    fn_timeout = partial(callback_timeout, a=1, b='B', c=12)
    # pass new partial function into addTimeout
    p = d.addTimeout(5, reactor, fn_timeout)
    yield d

task.react(main)

推荐阅读