gpt4 book ai didi

python - GAE 列出以名称开头的任务?

转载 作者:太空宇宙 更新时间:2023-11-03 16:44:06 25 4
gpt4 key购买 nike

当我添加队列时,我给它一个唯一的名称,例如longprocess-{id}-{timestamp}。 ID 是数据库中该条目工作的 ID,时间戳确保队列中没有冲突的名称。

问题是用户可以根据需要停止/恢复长进程,因此在停止请求中,我想列出以 longporcess-1 开头的所有任务(对于 {id } = 1),并停止所有这些(预计 1 个条目)。

我可以通过以下方式定位任务:

q = taskqueue.Queue('longprocess')
q.delete_tasks(taskqueue.Task(name='longprocess-{0}'.format(longprocess.id,)))

但是,当然,这不起作用,因为名称不正确(缺少 -{timestamp} 部分)。

有没有像 q.search('longprocess-1-*') 这样的东西我可以循环并删除?

感谢您的帮助。

最佳答案

不,没有像 q.search('longprocess-1-*') 这样的东西,也不可能有(技术上也不可能,但不合理 )由于队列的性质(原则上,否则它只是一个数据库表)。

队列的优点(和局限性)是它们使用 FIFO(先入先出) - 不严格,有时带有一些扩展,例如“延迟”任务的参数。但无论如何,任务调度程序/调度程序/协调程序不需要关心从队列中间删除任务,而是专注于队列头部有限数量的任务。通过这种特化,我们获得了队列概念的速度、成本效益和可靠性。

您的工作就是处理如何取消任务。您至少有 2 个选择:

  1. 在某处存储任务名称并使用它从队列中删除任务。
  2. 在某处存储取消任务的意图(请求)。当任务到达工作人员时,您检查标志,如果需要,只需忽略该任务。

当任务已分派(dispatch)给工作人员但尚未完成时,您可以结合使用这两种方法来处理边缘情况。但在大多数情况下,这并不值得付出努力。

顺便说一句,许多消息队列系统根本没有“任务删除”功能。正如俄罗斯谚语所说:“文字不是鸟 - 如果它消失了,你就无法将它放回去”。

关于python - GAE 列出以名称开头的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com