回答

3

好吧,我調查了一下,發現的另一種方式來處理具有Django的模型(即:所有Django的功能存在),並且仍然有機會獲得異步API ...

主要是,直接使用數據存儲:

from google.appengine.api import datastore 

,我已經有方法,我所有的模型轉換到/從一個JSON字典,因此,它是發現Django的Nonrel如何做到了在幕後的主要問題:

例如:

考慮到與to_json和from_json方法「項目」級(即:從字典中創建)

對於做一個簡單的查詢(似乎運行()會做異步工作,所以,一個可以做查詢.RUN()和後再掀query.Run()和都將在同一時間工作):

query = datastore.Query(Project._meta.db_table) 
for p in query.Run(): 
    p['id'] = c.key().id() #Convert from app engine key 
    print Project.from_json(p) 

現在,使用API​​以異步方式獲取對象:

from djangoappengine.db.compiler import create_key 
async = datastore.GetAsync(create_key(Project._meta.db_table, project_id)) 
p = async.get_result() 
p['id'] = c.key().id() #Convert from app engine key 
print Project.from_json(p) 

所以,可以用th保留模型e Django結構,當需要時,一些包裝程序異步執行所需的工作。

1

否。Django框架爲數據存儲提供了自己的接口,直到它直接支持異步調用爲止,就不可能進行異步調用。

+0

好的,我猜我必須將我的模型轉換爲App Engine模型然後...雖然在這種情況下,我想我會鬆動Django管理員 - 是否有類似於使用App Engine數據庫時的情況模型?或者有可能同時保留兩個數據庫結構? –

+0

@Fabio你可以在兩個庫中維護模型,但這是唯一的方法。 App Engine管理控制檯在數據存儲上提供基本的添加/修改/刪除操作。 –

+0

好吧,我找到了一種解決方法(添加了我自己的答案)。 –

相關問題