FTP服务器应如何响应以尝试检索不存在的文件

时间:2017-10-10 22:31:07

标签: python ftp google-compute-engine pysftp

我正在使用pyftplib创建一个用于上传视频的ftp服务器。 ftp服务器本身位于谷歌计算引擎之上,视频文件存储在谷歌云中。 我这样做是通过使用pyftplib中的事件回调将视频从计算引擎上传到云端,当它们被发送到ftp服务器时。 同样,当客户端请求时,我正在从谷歌云中检索文件。 在下面的代码中描述的情况下,我需要回答找不到文件。 但是,我不清楚当文件不存在时预期的FTP响应是什么。是否有我不知道的特定状态代码?

def ftp_RETR(self, file):
    for restricted_file_name in restricted_file_names:
        if restricted_file_name.lower() in file.lower():
            self.respond('200') # this is where I want to say file doesn't exist
            return
    try:
        storage_client = storage.Client(project='myproject')
        bucket = storage_client.get_bucket('myvideo')
        blob = bucket.blob(file)
        blob.download_to_file(open(file, 'w'))
    except NotFound:
        pass
    FTPHandler.ftp_RETR(self, file)

谢谢

1 个答案:

答案 0 :(得分:2)

来自RFC 959,即FTP标准:

 450 Requested file action not taken.
     File unavailable (e.g., file busy).