Django/Python 下载带有进度条的文件

4

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

事情是这样的,我有一个使用Django的管理界面,并想从服务器上的外部站点下载文件,并显示进度条以显示下载的百分比。

在下载的过程中我无法进行任何操作。我尝试在视图中使用call_command运行命令,但效果相同。

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

提前感谢您的回复。

1个回答

2

虽然有一些比喻的技巧,但是这是可能的。我的回答并不特定于Django,你需要将其翻译到你的框架中。

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

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

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

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


我的问题与Django有关。在本地运行时,我无法启动另一个线程。 - philippe87

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接