[Simple approach to launching background task in Django指的是我正在使用线程进行后台处理。它完美地呈现了一个html页面,但是用于后台处理的线程即使在执行了其功能后也没有停止,如何在完成其工作后停止该线程(仅当我按Ctrl + C时才停止)?
注意:线程调用的函数的输出很好,只是线程没有停止。我认为是因为该函数不会返回其调用函数。
我尝试使用threadname._stop,但是它也给出断言错误,我也不想使用thread.join(),因为它将等到处理完成后再呈现html页面。
这是代码(线程中的参数没有功能)
views.py中的调用功能
def callmepls(request):
if request.method=="POST":
global x
x=threading.Thread(target=theds,name="abcd", args=(1,),daemon=False)
x.start()
return HttpResponse("background process started working")
else:
return render(request,"callthis.html",{})
在view.py中执行功能
def theds(name):
for i in range(5):
print(i)
time.sleep(10)
x._stop()
模板(callthis.html)
{%extends "base.html"%}
{%block content %}
<form method="POST" action="">
{%csrf_token%}
<p>
Run the it:
<input type="submit" value="Start" >
</p>
</form>
{%endblock%}