4

好的,我决定在这里发布这个问题,因为我真的不知道该怎么做,或者即使它可能。你可能会告诉我这是一个转贴,但我已经阅读过类似的帖子,但它并没有帮助我。

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

下载时我什么都做不了。我尝试在视图中使用 call_command 运行命令,但它是相同的。

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

提前致谢,

4

1 回答 1

2

这是可能的,但通过隐喻的箍需要一些跳跃。我的答案不是 Django 特定的,您需要将其翻译到您的框架中。

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

  2. 在浏览器中,启动一个计时器,它会向“下载状态 URL”发出 AJAX 请求

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

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

于 2012-06-19T07:48:02.803 回答