python - 在 appengine 中使用较少的数据存储小操作

标签 python google-app-engine google-cloud-datastore python-2.7

我正在使用 python 27 在 appengine 上整理一个基本相册。我编写了以下方法来从与特定“冒险”相匹配的数据存储中检索图像详细信息。我正在使用限制和偏移量进行分页,但效率很低。浏览 5 页(每页 5 张照片)后,我已经使用了 16% 的数据存储小型操作。有趣的是,我只使用了 1% 的数据存储读取操作。我怎样才能使数据存储小型操作更高效 - 我不确定它们由什么组成。

def grab_images(adventure, the_offset=0, the_limit = 10):
    logging.info("grab_images")
    the_photos = None
    the_photos = PhotosModel.all().filter("adventure =", adventure)
    total_number_of_photos = the_photos.count()
    all_photos = the_photos.fetch(limit = the_limit, offset = the_offset)
    total_number_of_pages = total_number_of_photos / the_limit
    all_photo_keys = []
    for photo in all_photos:
        all_photo_keys.append(str(photo.blob_key.key()))
    return all_photo_keys, total_number_of_photos, total_number_of_pages

最佳答案

一些事情:

  1. 不需要每次都调用count,可以缓存
  2. 查询也一样,你为什么一直在查询?也缓存它。
  3. 同时缓存页面,你不应该每次都计算每页的数据。
  4. 您只需要 blob_key 但要加载整个照片实体,请尝试以不需要加载所有照片属性的方式对其进行建模。

吹毛求疵:你不需要 the_photos = None

关于python - 在 appengine 中使用较少的数据存储小操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9291036/

相关文章:

python - Numpy 多维子集

python - 相互减去列表中的所有项目

python - 如何根据每行的多个最大值更新矩阵?

python - GAE(Python)简单的Ajax调用(无法弄清楚实现这一点所需的基本内容):

python - 构建Python : how to disable Py_LIMITED_API?

java - GAE 数据存储增量 ID

google-app-engine - Golang - AppEngine Datastore GetMulti() 在返回 MultiError 时是否返回无效数据?

java - 通过 Key 获取实体时数据存储区抛出异常

google-cloud-platform - Google Cloud Firestore 与 Google Cloud Spanner 之间的区别?

python - 如何在 Django/Google App Engine 中制作日志颜色?