gpt4 book ai didi

multithreading - 为什么 Google App Engine 任务可以虚假地执行多次?

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

为什么可以多次执行 Google App Engine 任务?据做Brett Slatkin talk from Google I/O 2009 ,即使没有服务器故障,任务也有可能虚假地运行两次!

这与线程的虚假唤醒有关吗?

最佳答案

Brant Slatkin 给出了 similar talk at I/0 2010 .

我不知道他是否曾详细说明这将如何或何时发生。他的观点是,由于任务队列的工作方式,可以通过设计让任务重新排队。因此,您需要编写您的任务,以便在发生这种情况时不会造成问题。

例如,假设您有一个发送电子邮件然后递增 Datastore 中的计数器的任务。如果您的代码中存在错误或 Datastore 已关闭,则可能会成功发送电子邮件但写入 Datastore 失败。如果您没有通过处理异常来处理代码中 Datastore 的故障,则写入 Datastore 失败将导致您的任务返回 HTTP 状态代码 500。Task Queue 旨在在任务返回状态代码时重新排队任务>299。这将导致您的任务被反复执行,直到成功写入数据存储。这意味着有人会收到很多重复的电子邮件。

我认为关于“Possible for a task to spuriously run twice..”这一行只是一种表达 App Engine 不能保证防止这种情况发生的方式,因此您需要确保在代码中处理它.

关于multithreading - 为什么 Google App Engine 任务可以虚假地执行多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4151218/

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