2012-01-05 19 views
0

我有一個非常簡單的應用程序。我所做的一件事是,當有人創建一個新的窗口部件時,我將任務添加到任務隊列中以獲取窗口部件的qr代碼圖像並將其保存在Blob中。任務添加到後端目標隊列時發生登錄錯誤

我有一個隊列定義爲:

queue: 
- name: workqueue 
    target: worker 
    rate: 5/s 

我有一個後端定義爲:的app.yaml的

backends: 
- name: worker 
    options: dynamic 
    class: B1 

片段:

handlers: 
- url: /tasks/fetchimage 
script: worker.py 
login: admin 

在我的代碼,當用戶創建下面稱爲的小部件:

 taskqueue.add(#queue_name="workqueue", 
         url="/tasks/fetchimage", 
         method="GET", 
         params={"design_id": design_id}) 

「queue_name =」workqueue「被註釋掉了,一切正常(使用默認隊列不會到後端)。如果我刪除評論,我會在日誌中看到以下錯誤:

0.1.0.2 - - [04/Jan/2012:19:05:29 -0800]「GET/tasks/fetchimage?design_id = 9034 HTTP/1.1「302 0
...

請求失敗,因爲URL需要用戶登錄。對於在App Engine中調用的請求(脫機請求,如任務隊列,或者Web服務,如XMPP和傳入郵件),URL必須要求管理員登錄(或不登錄)。

我錯過了什麼嗎?我假設app.yaml設置適用於後端。這個假設是不正確的?

回答

2

你應該從後端處理程序中刪除login: admin,並確保後端是私人的,如果你不希望用戶能夠訪問該網址。

有關更多詳細信息,請參閱backends文檔。

+0

感謝您的回答。我以爲你通過將'login:admin'添加到處理程序來使後端處理程序變爲私有。後端默認是私有的。你能詳細說明嗎? – 2012-01-05 12:48:43

+0

哦,還有一件事。我刪除了'login:admin'來測試,它沒有幫助。 – 2012-01-05 12:52:09

+1

我沒有意識到後端必須從應用程序的其餘部分單獨更新。我以爲你一旦「更新」了後端(創建),每一個後續的appcfg更新都會更新前端和後端。一旦我更新後面的東西開始工作。謝謝你的幫助。 – 2012-01-05 16:07:17

相關問題