在将任务添加到拉取队列之前,我必须确认队列中是否已经存在相同的任务,如果存在应该跳过任务添加到队列。添加带有名称的任务对我不起作用,因为它直到队列中的 7 天才过期,甚至被删除。
我们可以使用REST API列出任务。同理,我们能否在 GAE 模块中获取任务列表,或者是否有其他方法可以在 Google App Engine 模块中查找任务是否存在于队列中?
谢谢
在将任务添加到拉取队列之前,我必须确认队列中是否已经存在相同的任务,如果存在应该跳过任务添加到队列。添加带有名称的任务对我不起作用,因为它直到队列中的 7 天才过期,甚至被删除。
我们可以使用REST API列出任务。同理,我们能否在 GAE 模块中获取任务列表,或者是否有其他方法可以在 Google App Engine 模块中查找任务是否存在于队列中?
谢谢
如果任务名称不适用于您的应用程序的逻辑,您可以创建一个相应的数据库实体(空,只是一个键),作为任务在队列中的标志。您应该将其与任务放在事务中的 db 中,并在任务完成时删除。
每个任务将花费您 1 次读取和 4 次写入(2 次插入和 2 次删除)操作 - 没有什么是免费的。
作为替代方案,您可以考虑在您的业务实体中设置一些计数器,作为任务名称的一部分。
假设您有实体 User 和属性 TaskCounter。
然后您将添加任务为:
tasks.add(taskName="TASKNAME" + str(user.id) + str(user.TaskCounter)) - 这将确保每个实体只能有 1 个活动任务。当然,您需要在任务完成时更新属性。如果您无论如何更新任务中的实体,它几乎不会花费您任何费用。