ruby – 文件是否仍在上传?

我有一个我正在编写的应用程序,它将文件放在通过SFTP上传的特定目录中并将它们移动到S3.

我有一个问题,我的cron作业在没有完全上传时开始上传文件.我已经想到了尝试等待文件完成的各种方法,但我无法知道(我知道).

我希望SO的集体天才能够对此有所了解!

最佳答案 有很多方法可以解决这个问题:

>更改上传过程以上传数据文件本身(例如,data.txt),然后上传sentinel文件(例如,data.txt.sentinel).然后在处理数据文件之前等待标记并删除它们.数据文件早于N天,没有相应的标记 – 只需删除它们.只有在您可以更改上传器时才有用.
>如果您可以评估文件的内容以检查完整性,这是另一种方法.例如,如果您只上传HTML文件,则可以检查它是否以< / html>结尾.除非您可以控制正在上传的内容,否则并非总是可行.
>未经修改的for-a-while方法.基本上,如果文件没有被修改N分钟,您可以假设上传已经完成.这可能仍然导致处理传输失败的不完整文件.

所有这些方法都有其优点和缺点,您必须决定哪种方法最适合您.我们尝试选择能够影响上传方面的数字1.

请记住,N在上述场景中是可配置的.您需要平衡过小的N将导致您在选项3中处理不完整文件但是过大的N值将延迟处理所述文件的可能性.

点赞