2015-10-13 134 views
0

我有一個簡單的Django項目。Django並行處理

每次用戶點擊主頁,都會根據其執行一些操作,生成視圖。現在的問題是,當用戶點擊主頁時,有時候基於網絡連接的操作需要很長時間。如果在此期間,新用戶點擊主頁,則他必須等待來自先前用戶的請求在頁面呈現之前得到服務。

我發現芹菜用於任務調度和排隊。但我想知道我是否需要Celery。我需要每個用戶讓他的請求被獨立處理,而不是排隊。

我的項目是一個單一的應用程序項目,一次最多可以接收100個用戶。

謝謝。

+0

你正在執行什麼操作?同步操作將永遠不會在Web應用程序上工作(您打算如何處理1^n個用戶?或者即使所有100個用戶都在做同樣的事情?) – Sayse

回答

1

如果爲了服務請求並生成正確的響應需要完成很長的過程,那麼您不能使用芹菜。

Django附帶的調試Web服務器是一個多線程單進程服務器,但實際上非常有限and should not be used in production

如果您使用gunicorn或其他wsgi服務器,您可以在多個進程中運行您的應用程序,但是如果您正在進行繁重的處理,您將很快達到極限。

解決方案在我看來是要麼改變你處理的東西的方式,要麼提前準備好或服務請求,並在後臺進行處理,你可以向用戶顯示一條消息,在這裏你可以使用芹菜做處理。

另一個解決辦法是使用基於事件的Web服務器一樣Twistedcycloneothers

+0

感謝您的回答。幫助我向正確的方向前進。將在生產中將其部署在apache中。 –