2014-01-11 79 views
0

我有一個GAE應用程序,它有一個app.yaml描述請求處理程序並使用延遲擴展將任務放到推送隊列中,該隊列的目標是我的應用程序中也定義的後端。在新的GAE模塊中使用任務隊列

但是,我在GAE儀表板中看到了「你正在使用後端,你應該看看模塊」的通知。所以我已經看過模塊,並且我在理解如何將後端定義爲模塊時遇到了一些困難。我的後端不需要任何明確定義的請求處理程序。它只處理隊列中的任務。但是,當我爲後端創建沒有處理程序的模塊yaml文件時,開發服務器會抱怨它是無效文件。

我嘗試使用backend_conversion.py文件,並將我的默認模塊中的請求處理程序複製到我的後端模塊中,這看起來可行,但感覺不對。

項目來源可以找到here和模塊轉換的分支是here

任何意見,將不勝感激。

+0

你將不得不添加一個處理程序部分的東西 - 我猜這個檢查在模塊存在之前是有意義的,但現在沒有那麼多。 – Greg

回答

2

您可以將指令target設置爲隊列定義queue.yaml

- name: solver_queue 
    ... 
    target: solver_backend 

和參數_queue添加到deferred.defer的:

deferred.defer(function, param1, param2, _queue='solver_queue') 
+0

謝謝你的提示。我已經在使用_queue參數,但我也在延遲調用中使用_target來定位solverbackend。我喜歡像你描述的那樣在queue.yaml文件中設置它。 – dOxxx

+0

我編輯了答案,以避免名稱混淆.. –

0

我的後端不需要任何明確定義的請求處理程序。它只處理隊列中的任務。

你覺得backend_conversion.py錯的原因是因爲它重複你的處理程序,你覺得你的後端不需要處理程序。但後端需要處理程序作爲前端實例。後端實際上做的是在後端實例上運行整個應用程序(由app.yaml定義)。因此,您的前端實例和後端實例實際上之前共享相同的代碼。

因此

的backend_conversion.py文件和複製請求處理程序

是一個正確的行爲。

+0

當然,我想我可以看到爲什麼作爲默認的轉換是有道理的。但是,爲什麼我不能編輯該定義並刪除處理程序而沒有錯誤? – dOxxx

相關問題