Django:执行该功能后THREADS无法关闭怎么关闭?

时间:2019-06-19 09:58:20

标签: python django python-3.x multithreading

[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%}

0 个答案:

没有答案