2013-11-01 73 views
0

我想上传一个文件到Django视图并将其传递给一个转换函数,该函数执行其他所有操作。转换函数db_transform_and_save需要一个类似文件的对象。我的工作解决方案迄今:django文件上传直接缓冲区

class UploadView(FormView): 
    template_name = 'mytemplate.html' 
    form_class = MyUploadForm 

    def form_valid(self, form): 
     db_transform_and_save(form.cleaned_data['my_upload'].read()) 

我的问题是:

  1. 有数据丢失的方法吗?
  2. 如果连接在上传过程中失败会发生什么情况?这是否意味着我的db_transform_and_save函数会永久运行?
  3. 如果服务器要处理多个连接,会发生Ihat?
  4. 我需要某种排队机制吗?

我正在用gunicorn运行这个django应用程序,4名工人。

回答

0
  1. 如果你的服务器崩溃或连接丢失,是的,你会丢失数据 - 没有办法绕过,除非你微管理你的文件上传,传输非常小的块并实现确认层自己 - (!你应该在你的db_transform_and_save检查),只要你是不是太关键任务,这可能是矫枉过正...
  2. 发布数据不能按时到达,您将收到一个空文件
  3. 这会放慢速度。如果有很多方法,它会显着减慢(几乎没有反应)。如果您预计数据负载过重,则应该用实际的上传大小来测试您的系统。在正常情况下,一切都应该顺利运行......
  4. 只要您的上传不会互相干扰,您就不需要其他任何东西。