2015-10-26 64 views
1

我有任務在appengine python中推遲它與所有task_info字符串,字符串列表的簡單調用。它適用於任何沒有任何任務。Appengine推遲任務的問題,執行引發未知錯誤

   deferred.defer(fetch_service, 
           _queue = "queue_name", 
           _countdown = task_counter * 4, 
           **task_info ) 

我觀察到一個奇怪的行爲,當我在不同的URL或不同的模塊訪問一些端點或UI時,這個延遲調用開始失敗。每個不同的調用都會引發同樣的問題。

File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/ext/deferred/deferred.py", line 145, in run 
    raise PermanentTaskFailure(e) 
PermanentTaskFailure: None.fetch_service forbidden in unpickling 

尋找任何幫助,或其他誰面臨同樣的問題。

回答

1

PermanentTaskFailure例外indicates表明任務失敗,並且永遠不會成功。

這通常意味着當GAE infra嘗試安排任務時遇到一些無效條件。

錯誤消息中的None.fetch_service字符串指向無效的引用:None沒有fetch_service屬性。

這可能表示在無法訪問fetch_service對象的模塊中嘗試執行任務。我會檢查顯示錯誤的模塊中的導入。

4

此問題特定於Google提供的GAE python scaffold。有一個允許被醃製的方法的白名單。

如果您將fetch_service方法添加到base/api_fixers.py列表中的_PICKLE_CLASS_WHITELIST列表中,它將起作用。