當使用帶有Django-Nonrel的Google App Engine時,有什麼方法可以在我用Django API聲明模型類時利用Async Datastore API?Django(nonrel),應用引擎和異步數據庫調用
2
A
回答
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框架爲數據存儲提供了自己的接口,直到它直接支持異步調用爲止,就不可能進行異步調用。
相關問題
- 1. AppConfigNotFoundError對Django的nonrel和谷歌應用程序引擎dev_appserver.py
- 2. django-nonrel谷歌應用程序引擎order_by('?')
- 3. 在應用引擎上的django-nonrel中的模型繼承
- 4. django nonrel應用程序引擎無法連接到遠程shell
- 5. 異步調用的SpiderMonkey JS引擎
- 6. Django異步調用
- 7. django谷歌應用程序引擎與關係數據庫
- 8. 數據庫引擎調優嚮導「應用建議」已禁用
- 9. 節點JS - 數據庫調用異步?
- 10. Scala異步數據庫調用
- 11. 節點JS異步數據庫調用
- 12. 對ios數據庫的異步調用
- 13. 使用應用程序引擎的django-nonrel模塊導入錯誤sdk
- 14. 數據庫和數據庫引擎
- 15. 使用Google App引擎的Django-nonrel:缺少AutoloadMiddelware類?
- 16. 如何異步加載數據庫中的帖子到谷歌應用引擎上的django模板?
- 17. 谷歌應用引擎Django和HTML5
- 18. 異步調用backendless數據
- 19. 訪問數據庫時的異步數據庫調用/ ActivityIndicator
- 20. Django,appengine和Django-nonrel
- 21. django-nonrel谷歌應用程序引擎無法登錄管理面板
- 22. 在django-nonrel中爲Google應用引擎使用manage.py時出現異常AttributeError消息
- 23. Django nonrel和grappelli
- 24. 在Google App引擎中使用django nonrel上傳和保存文件?
- 25. 哪個異步調用用於數據庫連接和仍然響應的GUI? -
- 26. 谷歌應用引擎不調用數據存儲區回調
- 27. Django中的異步數據庫更新?
- 28. Django測試異步數據庫寫入
- 29. 應用程序引擎記錄到數據庫和實體組
- 30. Google App引擎和桌面應用程序的數據庫
好的,我猜我必須將我的模型轉換爲App Engine模型然後...雖然在這種情況下,我想我會鬆動Django管理員 - 是否有類似於使用App Engine數據庫時的情況模型?或者有可能同時保留兩個數據庫結構? –
@Fabio你可以在兩個庫中維護模型,但這是唯一的方法。 App Engine管理控制檯在數據存儲上提供基本的添加/修改/刪除操作。 –
好吧,我找到了一種解決方法(添加了我自己的答案)。 –