2013-05-04 58 views
2

我創建Django應用程序,其中一個表和第二個應用1應用程序將數據從表中選取一個項目,處理它終於從表中刪除(在Django術語的應用程序)的第一項信號。它繼續這樣做直到處理完所有條目。當所有條目都被處理時,它會停止。當有新的條目時,它會重新開始。所以這就像消費者生產者問題。Django的信號:如何在表

我如何使用Django的信號時,第一項被製作成表格,開始第二個應用程序?

+1

應用程序?你爲什麼不簡單地重寫保存方法?當你在表格中插入一個新的項目時,你處理它(=運行第二個「應用程序」代碼)!你需要一個計時器?你在使用遠程服務器嗎?你需要先檢查它(作爲人類)?說實話,我真的希望這是作業或什麼,因爲你正在做的事情的方法似乎對我來說不是server-IO友好的! – StefanNch 2013-05-04 07:50:31

+0

@StefanNch我提到了「消費者 - 生產者」,所以它並不意味着它是作業:)。那麼,我可以重寫保存方法,但只要保存就會開始處理。我想以先到先得的方式處理它。因爲處理一個項目是CPU密集型的。我無法平行運行。 – Aryaveer 2013-05-04 08:04:24

+0

@StefanNch請糾正我,如果我錯了。 – Aryaveer 2013-05-04 08:11:11

回答

3

解決的問題是django-celery在註釋中。 django-celery提供了一個任務隊列和處理任務,而不會阻塞請求。因此,如果生產者發現表格爲空時插入一個新項目,則用post_save方法向消費者發送信號,處理程序啓動該任務,並在全部完成時停止。