1

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

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

单击时,每个按钮都会继续调用单独的视图函数。我面临的问题是,当我单击开始按钮时,它会通过 Python 视图中的函数调用启动模拟器。但正如我提到的,模拟器完成它的执行大约需要 3 分钟。因此,在 3 分钟内,我的 UI 完全没有响应。在呈现 Django 的当前视图之前,我无法按停止、暂停或恢复按钮。

那么解决这个问题的最佳方法是什么?我应该为模拟器生成一个非阻塞进程吗?如果是这样,在视图呈现后我如何才能知道新生成的进程已经完成了它的执行。

4

2 回答 2

1

前端肯定需要 Ajax。

对于后端,您可以使用celery之类的东西,您可以使用它执行异步任务(启动/停止模拟器)。要与 celery 通信,您可以使用polling,long pollingweb sockets.

于 2012-11-01T13:28:41.037 回答
0

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

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

可能你想在数据库中更新它。

于 2012-11-01T12:55:34.600 回答