是否可以更新任务队列中的 AppEngine 任务?
具体来说,更改eta
任务的属性以使其在不同的时间运行?
在我的场景中,我的数据存储中的每个项目都附加了一个关联的任务。如果元素已更新,则需要使用新的eta
.
我目前将任务的名称明确设置为使用的项目的 id,name=item.key().id()
以便我可以唯一地引用该任务。
当任务被调用和删除时,名称不会立即被释放(我认为)。这会导致问题,因为我需要在任务执行后立即重新添加它。
是否可以更新任务队列中的 AppEngine 任务?
具体来说,更改eta
任务的属性以使其在不同的时间运行?
在我的场景中,我的数据存储中的每个项目都附加了一个关联的任务。如果元素已更新,则需要使用新的eta
.
我目前将任务的名称明确设置为使用的项目的 id,name=item.key().id()
以便我可以唯一地引用该任务。
当任务被调用和删除时,名称不会立即被释放(我认为)。这会导致问题,因为我需要在任务执行后立即重新添加它。
使用拉队列,您可以使用 modify_task_lease 设置相对于当前时间的 ETA(即使您当前没有租用任务)。
您不能更改拉取队列任务的 ETA。
每个任务的名称在 7 天内仍然不可用。
所以我通过以下方式解决了这个问题:
我在我的模型中为task_name
. 当我创建元素并添加新任务时,我允许应用引擎为任务生成一个自动的、唯一的名称,然后检索该任务的名称并将其与模型一起保存。
这使我可以对任务进行引用。
当我需要修改任务时,我只需删除现有的任务,用新任务创建一个新eta
任务,然后将新任务的名称保存到模型中。
Task.add()
到目前为止这是有效的,但是将来可能会出现关于函数返回时任务不一致的问题。