我编写了一些小的自定义ftp服务器,我需要禁止打印异常(嗯,一种特定类型的异常)到控制台,但我希望服务器发送“550请求的未采取的操作:内部服务器错误”或类似的东西给客户端
但是,当我使用addErrback()捕获异常时,我在控制台中看不到异常,但客户端获得了OK状态..
我该怎么办?
答案 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