我有一个脚本,该脚本在文件上传时被触发。但是,我只想在批量上传所有文件后才执行此脚本。在这种情况下,批处理是该人要在较短的时间间隔(例如5分钟)内上传的所有文件。除了单个上载之间的时间之外,没有办法将批处理与单个文件上载区分开。我希望对批处理文件而不是对单个文件做出反应的原因是希望节省对上传文件的处理。延迟5分钟是可以接受的,因为处理的目的不是超级时间敏感的。
我知道有两种方法可以完成此任务:使用睡眠功能或使用cron。
使用sleep功能,脚本1将由上载触发并工作如下:
脚本1
if temp file exists
delete temp file
create temp file
else
create temp file
run script 2
脚本2
if temp file exists
if temp file was created < 5 minutes ago
sleep(300) //5 minutes
else
delete the file
process uploads
使用cron时,脚本看起来几乎相同,只是sleep函数将由对cron的调用(可能是通过第三方库)代替,以安排脚本在5分钟内重新运行。
如果您想获得更多上下文,我正在谈论的文件上传是到AWS S3的,该脚本将由监听所有S3文件创建事件的lambda函数触发。也许该上下文将有助于提出更好的特定于AWS的解决方案,但到目前为止,我还没有找到任何解决方案。
我应该使用sleep还是cron来做到这一点?我也愿意接受其他建议。
编辑:
我将修改我的处理脚本,以对上传的单个文件做出反应,而不是尝试在处理之前批处理它们。我应该能够将确切的链接发送到该文件,这样就不必扫描哪个文件被更改了。