我有一个HTML页面,里面有四个按钮:Start,Stop,Pause和Resume。按钮的功能是:
单击时每个按钮都会继续调用单独的视图功能。我面临的问题是,当我单击开始按钮时,它会通过Python视图中的函数调用启动模拟器。但正如我提到的那样,模拟器需要大约3分钟来完成它的执行。因此,在3分钟内,我的UI完全没有响应。我不能按下Stop,Pause或Resume按钮,直到渲染Django的当前视图。
那么解决这个问题的最佳方法是什么?我应该为Simulator生成一个非阻塞进程,如果是这样,在视图渲染出新生成的进程完成它的执行后,我怎么才能知道。
答案 0 :(得分:1)
你肯定需要前端的Ajax。
对于后端,您可以使用celery之类的内容
您可以执行异步任务(启动/停止模拟器)。与芹菜沟通,
你可以通过polling
,long polling
或web sockets
来完成。
答案 1 :(得分:0)
最简单我认为将使用ajax启动他的模拟器。启动请求的响应可以在同一页面上更新。
但是,您仍然需要考虑如何暂停,恢复和停止先前请求启动的模拟器。即如何管理和操纵模拟器的状态。
您可能想要在DB中更新它。