2012-04-17 39 views
0

我有一個通過IIS託管的站點(7.5,Windows Server 2008 R2)。該網站本身基於Django(Python),並使用Celery進行異步任務處理。 Celery在任務處理之前需要開始幾件事(celeryd,celerycam,celerybeat),並且我已經創建了一個啓動它的服務。它設置爲在「服務」控制面板中自動啓動。如何要求IIS站點等待服務?

我發現在服務器重新啓動(自動更新等)後,我的Celery服務要麼沒有啓動,要麼在計時方面出現問題,並且它們不可用於依賴於我的網站它。由於該網站在沒有這些工作的情況下基本沒用,所以我需要找到一種方法確保它們在網站可用之前運行。

我想避免讓所有的IIS依賴於此服務;只是一個有問題的網站(我有幾個其他網站通過那裏不同的端口託管,不需要服務)。

回答

0

在我看來,最好的解決方案是改變你的應用程序,當它無法連接到芹菜服務時,它會輕微地失敗。即向用戶提供一條信息錯誤消息,併爲其提供重試選項。

這是糟糕的設計,使其依賴於服務的開始順序。如果Celery服務因任何原因失敗會怎麼樣?順便說一句,數據庫連接/查詢也一樣。你的代碼應該總是妥善處理失敗/錯誤。