2012-06-19 83 views
4

好吧,我决定在这里发布这个问题,因为我真的不知道该怎么做,或者即使它可能。你可能会告诉我这是一个转发,但我已经阅读了类似的文章,并没有帮助我。Django/Python用进度条下载文件

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

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

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

由于提前,

回答

2

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

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

  2. 在浏览器,启动一个定时器,它确实AJAX请求到“下载状态URL”

  3. 创建此URL这需要从会话状态,并把一个处理程序,为JSON或一块HTML发送给浏览器。

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

+0

我的问题是特定于Django的。在本地当我做runserver时,我无法启动另一个线程。 – philippe87

+0

当您收到请求时启动线程。 –