【发布时间】:2011-09-24 07:32:41
【问题描述】:
我正在尝试实施延迟的博客文章删除方案。因此,您可以在 2 分钟的时间范围内取消删除,而不是烦人的您确定吗?。
我想跟踪使用 db.Model 类 (DeleteQueueItem) 时将删除的内容,因为我发现无法从队列中删除任务并怀疑我可以查询那里的内容。
创建 DeleteQueueItem 实体应自动设置 delete_when 属性并将任务添加到队列中。我使用博客文章的相对路径作为它们的 key_name 并希望在此处也将其用作 key_name。这让我有了一个自定义 init:
class DeleteQueueItem(db.Model):
"""Model to keep track of items that will be deleted via task queue."""
# URL path to the blog post is handled as key_name
delete_when = db.DateTimeProperty()
def __init__(self, **kwargs):
delay = 120 # Seconds
t = datetime.timedelta(seconds=delay)
deadline = datetime.datetime.now() - t
key_name = kwargs.get('key_name')
db.Model.__init__(self, **kwargs)
self.delete_when = deadline
taskqueue.add(url='/admin/task/delete_page',
countdown=delay,
params={'path': key_name})
这似乎有效,直到我尝试删除实体:
fetched_item = models.DeleteQueueItem.get_by_key_name(path)
这失败了:
TypeError: __init__() takes exactly 1 non-keyword argument (2 given)
我做错了什么?
【问题讨论】: