如何从google数据存储中删除所有条目?

2024-05-13 03:44:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个页面来删除数据存储中的所有条目。我正在使用self.key.delete()来完成这个任务,但是它已经停止工作了(它曾经工作过一次,但是它不再工作了)。在

删除条目的python代码:

class DeletePage(Handler):
    def get(self):
        self.key.delete()
        self.render('deletepage.html')

Tags: 数据key代码self目的getdef条目
1条回答
网友
1楼 · 发布于 2024-05-13 03:44:50

假设:

  • 您正在使用ndb
  • 您有一个包含实体模型的models.py文件

然后你可以尝试这样的方法,连接到应用程序的处理程序中:

from google.appengine.ext import ndb
import inspect
import models

for kind, model in inspect.getmembers(models):
    if not isinstance(model, ndb.model.MetaModel):
        continue
    cursor = None
    while True:
        keys, next_cursor, more = \
            model.query().fetch_page(500, keys_only=True, start_cursor=cursor)
        if keys:
            ndb.delete_multi_async(keys)
        if more and next_cursor:
            cursor = next_cursor
        else:
            break

如果您有很多实体,那么上面的内容可能会在一段时间后用DeadlineExceededError终止(在它应该删除一堆实体之后)。要么你重复这个要求直到他们都走了。在

或者甚至可以尝试将工作分散到延迟的任务上,在时间上错开以避免有太多可能导致实例爆炸的同时请求。像这样:

^{pr2}$

相关问题 更多 >