2011-02-18 62 views
0

我有一個網站,有時需要特別長的時間來處理請求(這不是一個缺陷)。 99%的時間非常快,因爲它幾乎不做任何處理。線程內應用程序與服務器進程

我要顯示一個消息,說「加載」時,該網站需要長時間來處理請求。我的網站使用mod_wsgi和Apache。我看到它的方式,我會迴應說「正在載入」的處理完成之前,做一兩件事情權利之前:

-spawn一個進程(daemon)線程採取處理的照顧。

-communicate通過與其他過程插座,並告訴它照顧處理的(最有可能發送請求http://localhost:8080/do_processing)。

一種方法與另一種方法的優缺點是什麼?

回答

0

使用單獨的過程更好。正如您在另一個答案中所建議的那樣,它不一定非常難,因爲您可以使用現有系統來完成如Celery(http://celeryproject.org/)的操作。依賴進程中的線程並不一定是個好主意,除非您要實現自己的內部作業排隊系統,以防止線程數量過多。另外,在多進程服務器配置中,不能保證請求返回到同一進程,因此不容易獲取正在運行的操作的狀態。最後,Web服務器進程可能會被終止,因此您的後臺任務也可能會在完成之前被終止。如果這個事件很重要,你需要有一個機制來保持這種事件的狀態。更容易使用像芹菜一樣的東西。

+0

感謝您的回答。我是你的博客粉絲! :) – primroot 2011-02-18 13:57:57

0

進程路由需要相當多的系統處理。創建一個單獨的過程相對昂貴和緩慢。但是,如果您的流程崩潰,它不會影響您的主要管理流程(您將收到退出狀態代碼並將有機會重新生成新的工作流程)。您還需要某種InterProcessCommunication層(可以是套接字,管道,共享內存等),這會增加項目的複雜性。

線程輕巧便宜。您只需管理對共享資源的併發訪問。所以這真的取決於你心中的任務。線程可能更適合實現您的任務。

相關問題