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的數據庫連接的工作方式,我會非常驚訝,在線程中創建多個項目比以串行方式更快。 –