首页 > 解决方案 > 如何使用 task_name 检索排队的任务

问题描述

我正在构建一个与以下流程中的任务队列一起使用的 Python 应用程序

  1. 通过调用将拉取任务添加到任务队列taskqueue.add()
  2. 通过调用租用相同的任务taskqueue.lease_tasks()
  3. 一段时间后,我们可能想通过调用来缩短租约时间taskqueue.modify_task_lease()

问题是,这 3 个步骤发生在不同的网络会话中。在第 3 步,modify_task_lease()函数需要一个任务实例作为参数,而我手头只有 task_name,它是通过网络挂钩从第 2 步传递的。

那么有没有办法用它的名字来检索一个任务呢?

文档中,我找到了delete_tasks_by_name(),但没有modify_task_lease_by_name(),这正是我想要做的。

标签: pythongoogle-app-enginetask-queue

解决方案


delete_tasks_by_name()只是一个包装器,delete_tasks_by_name_async()它被实现为

if isinstance(task_name, str):
  return self.delete_tasks_async(Task(name=task_name), rpc)
else:
  tasks = [Task(name=name) for name in task_name]
  return self.delete_tasks_async(tasks, rpc)

所以我想你可以类似地使用Task()构造函数来获取所需的任务实例modify_task_lease()

modify_task_lease(Task(name=your_task_name), lease_seconds)

推荐阅读