1
我有以更快返回在创建单独线程一些对象多线程的Django应用程序。创建的对象仅用于跟踪用户已完成的操作,而且不会对时间敏感。Django的线程和测试
使用看起来像这样的视图功能:
def foo(request):
#... do important computation...
bar(x, y, z)
return HttpResponse()
一切工作在这里很好,但是当我改变它看起来像这一点,并使用线程:
def foo(request):
#... do important computation...
thread = Thread(target=bar, args=(x, y, z))
thread.start()
if testing_mode:
thread.join()
return HttpResponse()
第二个版本失败。这一切都是使用TransactionTestCase
和mySQL完成的。
任何想法?
什么工作者线程? –
我已经更新了这个问题。它更清楚吗?基本思想是,如果bar()在测试数据库中创建一个对象,那么它不在第二个代码中,但它在第一个代码中。 – jmetz
你应该检查你的假设。如果考虑到Django的数据库连接的工作方式,我会非常惊讶,在线程中创建多个项目比以串行方式更快。 –