如何在完成上传后立即处理上传的文件

时间:2012-11-05 21:32:55

标签: upload message-queue

我有一个系统,它采用用户上传的文件并以特定方式处理它们。我在这里唯一要问的是时间 - 如何在上传文件后立即处理文件

我过去曾使用过排队系统 - 例如beanstalkd,我很确定工作队列应该是这个解决方案的一部分,但我仍然坚持通知部分。问题是上传本身没有连接到处理。上传由SFTP服务处理。处理由一组perl脚本处理。

如何提醒作业队列上传完成?

我考虑了以下想法,但它们在某种程度上看起来都是虚伪,脆弱或者站不住脚。

  • 以某种方式将校验和发送到作业队列,以便它知道文件已完成。但是,我想不出一个好方法,因为这样做的事情可能也知道无论如何都要完成上传,并且应该直接警告队列。
  • 确保上传的文件使用其校验和作为其名称。这是行不通的,因为我们正在处理实际上传的用户。
  • 让用户在上传后发送第二个文件“完成”,并轮询该文件。再一次,对用户来说太复杂了。
  • 观察文件的增长 - 如果文件长时间停止增长,请考虑完成。但这并不可靠。

如果重要,架构是

  • Jscape SFTP服务器
  • 的Perl
  • Linux(Ubuntu 10.04)操作系统

编辑2012-11-06

我做了一些研究,发现了这个:

和此:

(除其他外,所有类似)。长话短说,答案是“你必须以某种方式表明上传已完成;所有其他测试结束时都不可靠”。

事实证明,我的SFTP服务器确实有一个触发系统可以触发动作,包括任意进程,以响应“文件上传完成”等事件。所以我打算用它。我仍然很好奇是否有人找到了一个更通用的解决方案,但我打算关闭这个解决方案,因为我认为这个问题已得到解答。

0 个答案:

没有答案