抑制扭曲中的异常

时间:2012-12-16 11:27:28

标签: python twisted

我编写了一些小的自定义ftp服务器,我需要禁止打印异常(嗯,一种特定类型的异常)到控制台,但我希望服务器发送“550请求的未采取的操作:内部服务器错误”或类似的东西给客户端

但是,当我使用addErrback()捕获异常时,我在控制台中看不到异常,但客户端获得了OK状态..

我该怎么办?

1 个答案:

答案 0 :(得分:0)

当您在errback处理程序中捕获错误时,您应该检查失败的类型,并根据应用程序的内部逻辑将错误作为FTP错误消息发送给客户端 twisted.protocol.ftp.FTP使用self.reply处理此问题(ERROR_CODE,“description”)

所以你的代码看起来像这样:

from twisted.internet import ftp

MY_ERROR = ftp.REQ_ACTN_NOT_TAKEN

def failureCheck(failureInstance):
    #do some magic to establish if we should reply an Error to this failure
    return True

class myFTP(ftp.FTP):
    def myActionX(self):
        magicResult = self.doDeferredMagic()
        magicResult.addCallback(self.onMagicSuccess)
        magicResult.addErrback(self.onFailedMagic)
    def onFailedMagic(self,failureInstance):
        if failureCheck(failureInstance):
            self.reply(MY_ERROR,'Add relevant failure information here')
        else:
            #do whatever other logic here
            pass