我有一个简单的视图和一个复杂的函数:
def addWord(request):
def calculate():
<code>
form = WordCreationForm(request.POST or None)
if form.is_valid():
calculate()
form.save()
form = WordCreationForm()
return render(request, 'add_word.html')
我需要calculate()
才能独立运行。我不需要任何回调。我只想启动它,然后立即返回保存表单。所以,我这样做了:
import threading
def addWord(request):
def calculate(num):
<code>
form = WordCreationForm(request.POST or None)
if form.is_valid():
threading.Thread(target=calculate, args=(request.POST['num'],)).start()
form.save()
form = WordCreationForm()
return render(request, 'add_word.html')
但是在这种情况下,在完成calculate()
之前,表单仍然不会保存并再次呈现。
那么,异步启动calculate()
的最佳方法是什么?
答案 0 :(得分:0)
您的线程逻辑对我来说很合理,下面的示例说明了相同的行为:
import time
from threading import Thread
def printer():
time.sleep(1)
print("printer")
def main():
Thread(target=printer).start()
print("finished")
main()
它输出:
finished
printer
您如何确认直到之后才调用calculate
?或那成功了(它可能在您不注意的情况下出现了异常)