获得响应式Django视图

时间:2012-11-01 12:28:20

标签: python django django-views subprocess

我有一个HTML页面,里面有四个按钮:Start,Stop,Pause和Resume。按钮的功能是:

  • 开始按钮:启动后端模拟器。 (模拟器大约需要3分钟才能执行。)
  • 停止按钮:停止模拟器。
  • 暂停按钮:暂停模拟器。
  • 恢复按钮:从暂停的阶段恢复模拟器。

单击时每个按钮都会继续调用单独的视图功能。我面临的问题是,当我单击开始按钮时,它会通过Python视图中的函数调用启动模拟器。但正如我提到的那样,模拟器需要大约3分钟来完成它的执行。因此,在3分钟内,我的UI完全没有响应。我不能按下Stop,Pause或Resume按钮,直到渲染Django的当前视图。

那么解决这个问题的最佳方法是什么?我应该为Simulator生成一个非阻塞进程,如果是这样,在视图渲染出新生成的进程完成它的执行后,我怎么才能知道。

2 个答案:

答案 0 :(得分:1)

你肯定需要前端的Ajax。

对于后端,您可以使用celery之类的内容 您可以执行异步任务(启动/停止模拟器)。与芹菜沟通, 你可以通过pollinglong pollingweb sockets来完成。

答案 1 :(得分:0)

最简单我认为将使用ajax启动他的模拟器。启动请求的响应可以在同一页面上更新。

但是,您仍然需要考虑如何暂停,恢复和停止先前请求启动的模拟器。即如何管理和操纵模拟器的状态。

您可能想要在DB中更新它。