如何在服务器的突然端删除任何临时文件(在会话期间创建)?

时间:2014-07-07 06:24:04

标签: django

我正在使用Django 1.5.5。

我有一个允许用户将巨大的Excel文件上传到数据库的视图。首先,我将上传的文件与锁定文件一起存储在/tmp/文件夹中,以禁止同时访问数据库。

现在假设用户正处于上传过程中(最多需要15分钟),如果服务器突然结束(出于任何原因),我如何捕获此异常以便删除所有临时文件?

1 个答案:

答案 0 :(得分:0)

  

现在假设用户正处于上传过程中(需要   最多15分钟),如果服务器突然结束(出于任何原因),如何   我是否捕获此异常,以便我可以删除所有临时的   文件?

您的应用程序不会出现此类异常,因为您的应用程序已经超时(这是实际错误)。

您的服务器应该自动清除/tmp,如果不是,那么您需要修复它,否则您将很快耗尽磁盘空间。

要解决此问题,您需要将Excel文件的上传与显示表单的页面分开,这样您的应用程序就不会让客户端等待响应。使用类似django-sticky-uploads的内容,它会在后台上传您的文件。

您可能还需要考虑使用celery,这是一种在“背景”中运行代码的方法。这样它就不会让用户等待响应。如果文件处理需要很长时间(长度超过30秒),这将非常有用。

最后 - 如果处理Excel文件时发生任何事情,您可能希望使用transactions来确保数据库处于干净状态。