【问题标题】:Store file on server for a short time period在服务器上短时间存储文件
【发布时间】:2013-03-22 20:45:32
【问题描述】:

在服务器上命名和存储生成的文件的最佳方法是什么,这样如果用户在接下来的 5 分钟左右请求该文件,则返回它,否则返回错误代码?我正在使用 Python 和 Webapp2(尽管这适用于任何 WSGI 服务器)。

【问题讨论】:

  • 您有什么顾虑?您是否只想减少/消除重复名称的可能性?还是出于安全考虑,您还想要不可预测性?
  • 在这种情况下,安全性并不重要。
  • 那么,您是在寻找客户端或服务器代码,还是只是一种机制?从问题中不清楚您正在寻找什么级别的详细信息。
  • 我只是想知道在服务器上临时存储文件的标准方法是什么。问题是:文件需要获得唯一的名称;文件必须在 5 分钟左右后删除。

标签: python webapp2 temporary-files


【解决方案1】:

我建议在服务器上使用客户端创建的UUID,当服务器存储它时,将错误(强制重试)发送回客户端。在大多数情况下,UUID 将是完全唯一的,不会与已存储的任何内容发生冲突。如果是这样,客户端可以选择一个新名称并重试。如果您想让这稍微好一点,请在重试之间等待一个随机的毫秒数,以减少重复发生冲突的可能性。

这就是我解决这个特定的、不安全的短期存储问题的方法。

至于删除,我会让服务器负责每隔一段时间删除它们,基本上是检查是否有任何文件超过 5 分钟并删除它们。只要正在进行的下载使文件保持打开状态,它就不会中断。

如果您想让客户端保持控制,当客户端离线时,您将无法简单地强制删除,因此我建议按日期顺序保留文件列表并删除它们:

  • 如果您希望运行很长时间,则在必要时在后台线程中运行
  • 在启动时(需要将这些保存到磁盘)
  • 关机时(不需要持久化到磁盘)

但是,如果您崩溃或丢失持久性信息,所有这些机制都容易在服务器上留下不必要的文件,因此我仍然建议将删除作为服务器的责任。

【讨论】:

  • 清理文件怎么样?确保它们在短时间内被删除的最佳方法是什么?
猜你喜欢
  • 1970-01-01
  • 2016-01-30
  • 1970-01-01
  • 2018-01-25
  • 2016-10-08
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2018-06-06
相关资源
最近更新 更多