2012-01-19 51 views
4

我是一個相當可觀的App Engine應用程序移動一些功能到後臺,突然開始變得在我使用的交易通過dev_appserver.py運行時,地方的一些誤區:組合問題 - Google App Engine開發者服務器中的後端和事務任務隊列?

ApplicationError: ApplicationError: 10001 Transaction(<handle: 0x1, app: "dev~MYAPPNAME", >) not found 

我意識到只有當我通過--backends運行應用程序時纔會出現問題。而且我猜發生問題,因爲我有,增加了一個任務,使用「transactional=True」一個隊列中的事務,即:

def txn(): 

    # make model changes 

    taskqueue.add(url='/models/processupdate', params=my_params, transactional=True, queue_name='not_the_default_q') 
    db.run_in_transaction(txn) 

這是的「單線程」 dev_appserver的自然結果?有沒有解決這個問題的方法?

+0

是否存在帶有錯誤的堆棧跟蹤?你可以用它來修改這個問題嗎? – 2012-02-04 07:52:27

+0

不幸的是我只是有上面的錯誤。 – 2012-02-05 01:58:46

回答

0

根據google doc here,如果您的任務是事務性的,則不能命名隊列,只能將事務任務添加到默認隊列中!

+0

你在哪裏看到這個?我無法在該頁面上找到它。我們一直在使用事務隊列(帶有名稱)。當我引入使用後端的代碼時,它就成了一個問題。 – 2012-02-07 18:02:08

+0

閱讀最後一句:transactional = False 在db.run_in_transaction()中調用此方法時相關。指示僅當成功提交封閉數據存儲區事務時才應添加此事務性任務。請注意,在這種情況下,此任務不得有用戶指定的名稱。 – Allen 2012-02-07 18:46:03

+0

沒錯,但是指的是任務名稱,而不是隊列名稱:http://code.google.com/appengine/docs/python/taskqueue/overview.html#Task_Names – 2012-02-07 20:24:54

相關問題