首页 > 解决方案 > Google Cloud Tasks 执行后会自行删除吗?

问题描述

在我的应用程序中,我实现了 Google Tasks,以便我的用户可以在他们的ToDo项目到期时收到通知。

我的主要问题是,当我的 Cloud Task 触发时,我注意到它仍然位于我的 Cloud Task Console 中。那么,一旦他们被解雇,他们会删除自己吗?对于我的应用程序,我希望云任务在完成后自行删除。

我在文档中注意到这一行you can also fine-tune the configuration for the task, like scheduling a time in the future when it should be executed or limiting the number of times you want the task to be retried if it fails.事情是,我的任务没有失败,但我看到的数量是retries4。

firebase cloud functions

exports.firestoreTtlCallback = functions.https.onRequest(async (req, res) => {
    try {
        const payload = req.body;
        let entry = await (await admin.firestore().doc(payload.docPath).get()).data();
        let tokens = await (await admin.firestore().doc(`/users/${payload.uid}`).get()).get('tokens')
        await admin.messaging().sendMulticast({
            tokens,
            notification: {
                title: "App",
                body: entry['text']
            }
        }).then((response) => {
            log('Successfully sent message:')
            log(response)
        }).catch((error) => {
            log('Error in sending Message')
            log(error)
        })
        const taskClient = new CloudTasksClient();
        let { expirationTask } = admin.firestore().doc(payload.docPath).get()
        await taskClient.deleteTask({ name: expirationTask })
        await admin.firestore().doc(payload.docPath).update({ expirationTask: admin.firestore.FieldValue.delete() })
        res.status(200)
    } catch (err) {
        log(err)
        res.status(500).send(err)
    }
})

标签: google-cloud-platformgoogle-cloud-tasks

解决方案


如果任务被调度或分派,则可以删除它。如果根据本文档成功完成或永久失败,则无法删除任务。

  • 如果应用程序的请求处理程序返回 [200 - 299] 范围内的 HTTP 响应代码,则任务尝试成功。
  • 如果应用程序的处理程序返回非 2xx 响应代码或 Cloud Tasks 在截止日期之前未收到响应,则任务尝试失败:
  1. 对于 HTTP 任务,10 分钟。截止日期必须在 [15 秒,30 分钟] 区间内

  2. 对于 App Engine 任务,0 表示请求具有默认截止日期。默认期限取决于服务的扩展类型:自动扩展的标准应用程序为 10 分钟,手动和基本扩展的标准应用程序为 24 小时,弹性应用程序为 60 分钟。

  • 失败的任务将根据重试配置进行重试。请检查您的 queue.yaml 文件以获取重试配置集,如果您想根据您的选择指定和设置它们,请遵循

该任务将作为 HTTP 请求推送给工作人员。如果工作人员或重定向工作人员通过返回成功的 HTTP 响应代码 ([200 - 299]) 来确认任务,则该任务将根据本文档从队列中删除。如果返回任何其他 HTTP 响应码或没有收到响应,将按照以下方式重试该任务:

  • 用户指定的限制:重试配置、速率限制队列的状态
  • 系统节流:为了防止 Worker 超载,Cloud Tasks 可能会暂时降低队列的有效率。不会更改用户指定的设置。

推荐阅读