gpt4 book ai didi

python - 从任务队列中按名称获取任务

转载 作者:太空狗 更新时间:2023-10-30 00:02:56 26 4
gpt4 key购买 nike

如何通过名称获取任务?

from google.appengine.api import taskqueue
taskqueue.add(name='foobar', url='/some-handler', params={'foo': 'bar'}

task_queue = taskqueue.Queue('default')
task_queue.delete_tasks_by_name('foobar') # would work

# looking for a method like this:
foobar_task = task_queue.get_task_by_name('foobar')

使用 REST API ( https://developers.google.com/appengine/docs/python/taskqueue/rest/tasks/get) 应该是可能的。但我更喜欢像 task_queue.get_task_by_name('foobar') 这样的东西。有任何想法吗?我错过了什么吗?

最佳答案

无法保证具有此名称的任务存在 - 它可能已经执行过。即使您设法获取 一个任务,它也可能在您尝试用它做某事时执行。所以当你试图把它放回去时,你不知道你是第一次还是第二次添加它。

由于这种不确定性,我看不到任何通过名称获取任务可能有用的用例。

编辑:

您可以为您的任务命名,以确保特定任务只执行一次。当您将具有名称的任务添加到队列时,App Engine 将检查具有该名称的任务是否已经存在。如果是,则后续尝试将失败。

例如,您可以运行多个实例,每个实例可能需要在 Datastore 中插入一个实体。您的第一个选择是检查数据存储中是否已存在实体。这是一个相对较慢的操作,当您收到响应(实体不存在)并决定插入它时,另一个实例可能已经插入了它。因此,您最终会得到两个实体而不是一个实体。

您的第二个选择是使用任务。一个实例创建一个任务来插入它,而不是直接将一个新实体插入到数据存储中,并且它给这个任务一个名字。如果另一个实例尝试添加同名任务,它将简单地覆盖现有任务。因此,您可以保证一个实体只会被插入一次。

关于python - 从任务队列中按名称获取任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22622188/

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