当将 Google App Engine 与 Django-nonrel 结合使用时,有没有办法利用 Async Datastore API当我使用 Django API 声明我的模型类时?
最佳答案
好吧,我进行了更多调查,找到了一种替代方法来处理 Django 模型(即:那里的所有 Django 功能)并且仍然可以访问异步 API...
主要是直接使用数据存储:
from google.appengine.api import datastore
而且我已经有了将所有模型与 json 字典相互转换的方法,因此,主要是发现 Django-Nonrel 在幕后是如何做到这一点的:
例如:
考虑使用 to_json 和 from_json 方法的“Project”类(即:从字典创建)
对于执行一个简单的查询(似乎 Run() 会异步执行工作,因此,可以执行 query.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)
因此,可以保留具有 Django 结构的模型,并且在需要时一些包装器异步完成所需的工作。
关于python - Django (nonrel)、App 引擎和异步数据库调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7550083/