can';t在django上运行时停止进程
index.htmlcan';t在django上运行时停止进程,django,multithreading,python-3.x,data-structures,while-loop,Django,Multithreading,Python 3.x,Data Structures,While Loop,index.html <html> <head> <title>Demo</title> </head> <body> <form action="" method="POST" name="form"> {% csrf_token %} <div> <in
<html>
<head>
<title>Demo</title>
</head>
<body>
<form action="" method="POST" name="form">
{% csrf_token %}
<div>
<input type ="submit" value = "start" name = "start" >
<input type ="submit" value = "stop" name = "stop" >
</div>
</form>
</body>
</html>
无螺纹
class IndexView(generic.TemplateView):
template_name = 'demo/index.html'
def post(self,request,*args,**kwargs):
flag1 = request.POST.get("start")
if flag1 == "start":
flag = "start"
flag1 = request.POST.get("stop")
if flag1 == "stop":
flag = "stop"
def job():
print("Processing Start..")
while flag == "start":
#job()
print ("job() call...")
demo_var1 = request.POST.get("stop")
if demo_var1 == "stop":
flag = "stop"
print("This is while flag inside : ",flag)
break
time.sleep(10)
我想在用户从浏览器按开始按钮时启动进程,从按停止按钮停止该进程
我不明白为什么代码不能在运行时插入
请帮我找到解决办法
提前谢谢 您不能打断
while
语句,因为函数没有重新返回(卡在while
语句中)。单击按钮将再次实例化IndexView
类
您需要将
flag
设置为全局变量,以便所有实例的值都相同。这真的很糟糕。站点效应是,所有正在运行(在while循环中)的用户都将退出:)对于多个进程,您可以将flag存储在DB中,并且当您想要停止单独的进程时,可以更改flag。正常情况下,对于长时间的任务,您将使用一个完全独立的进程,例如,我试图通过mongodb中的变量作为标志来停止进程,当我按下stop按钮时,那么标志(mongodb)变量的值将变为true至false,我正在处理多个进程,如何在while循环中检查标志(mongodb)变量的值?是,您可以检查循环中的值,但需要转到另一个视图来更改DB值。我将使用一个循环视图
(在这里有循环)和一个按钮视图
,在这里触发DB更改。您可以使用POST
将HTML从LoopView
发送到按钮view
。
class IndexView(generic.TemplateView):
template_name = 'demo/index.html'
def post(self,request,*args,**kwargs):
flag1 = request.POST.get("start")
if flag1 == "start":
flag = "start"
flag1 = request.POST.get("stop")
if flag1 == "stop":
flag = "stop"
def job():
print("Processing Start..")
while flag == "start":
#job()
print ("job() call...")
demo_var1 = request.POST.get("stop")
if demo_var1 == "stop":
flag = "stop"
print("This is while flag inside : ",flag)
break
time.sleep(10)