使用gevent运行remote_api_shell.py

时间:2012-12-19 18:09:23

标签: google-app-engine gevent

我有一个相对简单的脚本用于在我的数据上运行地图作业,我希望通过使用gevent使数据存储区的读取无阻塞来更快地运行。

我尝试将gevent.monkey.patch_socket()添加到remote_api_shell.py的顶部,但在我登录后,它会抛出urllib2.URLErrortraceback)。

我是GAE和gevent的新手。有没有更简单的方法来完成我想要做的事情?有人能指出我正确的方向让这个工作吗?

1 个答案:

答案 0 :(得分:1)

如果使用ndb

您可以ndb使用*_async datastore operations
https://developers.google.com/appengine/docs/python/ndb/async

例如,要按键检索元素列表:

ndb.get_multi_async(list_of_keys)

ndb的优点在于密钥或实体上的每个数据存储区操作都具有异步等效项。

如果使用db

您可以使用Async Datastore API

例如,要按键检索元素列表:

from google.appengine.ext import db
db.get_async(list_of_keys)

其中list_of_keys包含字符串,google.appengine.api.datastore_types.Key的实例或google.appengine.api.datastore.Entity的实例的元素。

同样,您可以在实体列表上使用db.put_async,在类似db.delete_async的列表上使用db.get_async