从服务器发送信息到视图而不重新加载django

时间:2014-04-18 10:08:16

标签: python django multithreading view

在我的应用程序中,用户可以从将在服务器端的线程中执行的接口启动爬网操作。此爬网在while循环中执行,并将发送一些信息(暂时,作为控制台中的打印)。

我想要做的是将控制台中显示的信息发送到视图。该图总结了过程

View                                     Server
  |                                         |
  |    Call the async function with ajax    |   crawl   Thread
  |---------------------------------------->|------------>|
  |                                         |             |
  |                                         |             |
  |          send back information          | information |
  |<----------------------------------------|<------------|
  |                                         |            ...
  |------|                                  |
  |      | refresh view                    ...
  |      |
  |<------   
 ...          

有办法做到这一点吗?我不知道怎么做(信号?websockets?)
谢谢 !

1 个答案:

答案 0 :(得分:0)

您可以采取两种方法:轮询或推送。

如果你要进行民意调查,这是更容易的选择,你可以使用几件东西,从使用jQuery更新DOM到像Knockout.js中的Observables / ObservableArrays更优雅。

如果您要推送,我建议您以pub / sub方式使用socket.io和Redis。

无论哪种方式,您最终都会使用JavaScript来更新DOM。