Django / Python使用progressbar下载文件

时间:2012-06-19 07:27:27

标签: python django multithreading file download

好的,我决定在这里发布这个问题,因为我真的不知道该怎么做,甚至可能。你可能会告诉我这是一个重新发布的左右,但我已经阅读了类似的相关帖子,它并没有帮助我。

这是合约。我有一个django的管理界面,想从我服务器上的外部站点下载一个文件,其中一个进度条显示了下载的百分比。

下载时我无法做任何事情。我尝试在视图中使用call_command运行命令,但它是相同的。

是因为Django服务器是单线程的?那么,甚至可以实现我想做的事情吗?

提前致谢,

1 个答案:

答案 0 :(得分:2)

这是可能的,但通过隐喻的箍,需要一些跳跃。我的答案不是特定于Django,你需要将它翻译成你的框架。

  1. 启动执行实际下载的线程。在下载时,它必须更新用户会话中的一些数据结构(下载的总大小等)。

  2. 在浏览器中,启动一个计时器,对“下载状态URL”执行AJAX请求

  3. 为此URL创建一个处理程序,该处理程序从会话中获取状态并将其转换为JSON或您发送到浏览器的一段HTML。

  4. 在AJAX处理程序的成功方法中,获取JSON / HTML并将其放入当前页面。除非下载完成(这部分使用JSON更简单),请重新启动计时器。