2012-08-01 187 views
2

当您使用Django上传文件时,直到文件上传完成后才会返回响应。如果上传的文件很大,则需要很长时间,在此期间用户不能做任何事情,只能等待。有什么办法可以实现文件上传的异步处理?那么,当文件上传后端时,用户可以在当前页面上执行一些其他操作而不中断上传?在Django中上传文件的异步处理

回答

-2

您需要任务管理。芹菜就是你所追求的。

+2

从技术上讲,如果OP只是做了一个ajax POST,我不认为芹菜是特别需要的。虽然如果他们希望它更具互动性,那么他们将不得不使用闪存上传器或芹菜异步任务,只是保持轮询状态,以便注册完成 – jdi 2012-08-01 04:07:45

+0

谢谢。我试图用多线程处理文件上传,但流读取的线程总是在签名错误时退出。我会尝试使用芹菜asyc任务。 – user1567395 2012-08-01 08:03:20

+0

这是一个很有价值的答案。 Celery任务不能接受类似文件的对象作为参数,因为它需要它的参数是JSON序列化的。此外,经纪商的参数最大(至少对于RabbitMQ来说)。 – mpiskore 2017-10-26 06:36:21

0

我知道自从问了这个问题以来,已经有5年多的时间了,但是我也有类似的问题,所以没有“简单的答案”。

对于您的问题,我可能建议使用progress bar(如果使用Django表单)。在Django中异步上传文件might not be possible

在我的情况下,浏览器元素并不重要,我正在考虑将文件上传从浏览器上传到某种类型的FTP/AWS S3文件存储并在此工作。