我想在Python做到這一點在谷歌App Engine的數據存儲區:問題發佈使用deferred.defer任務
def add_to_db(person):
a = PersonDb(key_name = person)
# get some data
data1 = a.name
data2 = a.age
a.put()
for person in people:
deferred.defer(add_to_db, person, _queue="myque")
當我通過一個cron作業運行上面的代碼它不工作。該文件執行時沒有錯誤,任務(列表'People'中有200個字符串)被正確添加到隊列中並正確地通過。但數據庫PersonDb不會更新。我知道函數工作(上面是簡化的),因爲這個工程:
for person in people:
add_to_db(person)
上述兩行的代碼的工作,並且數據庫被更新,但我需要運行這個作爲遞延任務。有什麼建議麼?
更新:我在日誌中得到這樣的: 文件 「C:\ Program Files文件\谷歌\ google_appengine \谷歌\ AppEngine上\分機\延期\ deferred.py」,線路129,在運行 提高PermanentTaskFailure (五) PermanentTaskFailure:「模塊」對象有沒有屬性「add_to_db」
你顯然忽略了很多重要的東西 - 什麼是「a」?我們真的需要看到您的_actual_代碼來提供幫助。然而,放棄數據存儲幾乎沒有任何意義 - 它只會讓你很少,甚至會失去一些性能。 – 2011-06-03 09:59:35
您的隊列名稱應該作爲'_queue'傳遞,而不是'queue'。 – 2011-06-03 13:57:13
@尼克'a'是一個模型類。 – Doug 2011-06-03 19:51:15