【发布时间】:2016-06-21 10:38:53
【问题描述】:
index.html
<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>
这是使用线程的views.py文件,我也尝试过不使用线程但是当进程在django服务器中启动时,它无法停止或终止。
#views.py
import time
from django.shortcuts import render_to_response
import threading
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_test(arg):
t = threading.currentThread()
while getattr(t, "do_run", True):
print ("working on %s" % arg)
time.sleep(1)
print("Stopping as you wish.")
t = threading.Thread(target=job_test, args=("task",))
if flag == "stop":
time.sleep(10)
if flag == "start":
time.sleep(0)
t.join()
无螺纹
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中中断。
请帮我找到解决办法。
提前致谢。
【问题讨论】:
-
通常,对于长任务,您会使用完全独立的进程,例如celery.
标签: django multithreading python-3.x data-structures while-loop