ngnix和避免雷鸣的场景

我有一个安装程序,nginx将在nedia direcotry上尝试一些文件,并提供静态图像文件。

如果找不到,会调用后端,从s3中提取文件,创build一些数据库条目,然后将文件复制到媒体目录,以便进一步调用该媒体文件将由nginx提供。

生成文件可能需要5秒钟。

当这个文件有X个新请求时,这个文件还没有生成,后端将被调用X次而不是一次。 我怎样才能避免这个问题,并保持所有请求,直到文件准备好?

创build某种locking机制,通知其他实例/线程该文件当前正在处理,应该等待。 最简单的解决scheme是用临时目录写出一个文件名,让脚本检查是否存在,如果存在,就进入暂停模式。