Python在errb之后返回回调链

2024-10-03 09:07:14 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我有一个回调链,类似这样:

deferred = create_deferred()
deferred.addCallback(cb1)
deferred.addCallback(cb2)
deferred.addCallback(cb3)
deferred.addCallback(cb4)

deferred.addErrback(start)
deferred.addErrback(eb1)

deferred.addBoth(end)

输入从start()开始-这也是一个错误返回。在start中,创建一个延迟的。它有4个处理步骤,从cb1到cb4。如果一切正常,输入应该经过4个处理步骤,最后是end()——来自addBoth。你知道吗

如果一路上出了问题(在cb1或cb2中,等等),他们应该转到start(),在那里输入将被“重试”几次。如果没有更多的重试,或者start()中发生了错误,则应该转到eb1,而不是end()。你知道吗

我的问题是,即使对某个输入有重试,它仍然会转到eb1,而不是最后。你知道吗

如果回调链遇到错误,如何使其延迟返回?你知道吗

enter image description here

现在,如果,例如,我在CB2中有一个错误,延迟将转到START,但是即使它仍然有重试,它仍然转到EB1。我怎样才能解决这个问题?你知道吗

谢谢!你知道吗


Tags: 错误create步骤startenddeferredcb2addcallback
1条回答
网友
1楼 · 发布于 2024-10-03 09:07:14

简而言之,如果在START之后调用EB1,那么START必须返回某种失败值。这就是Twisted知道是走回调链还是返回链的方式。你知道吗

相关问题 更多 >