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