1

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

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

我能做什么?

4

1 回答 1

0

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

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

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
于 2012-12-17T10:56:27.943 回答