gpt4 book ai didi

python - 什么时候可以在 Google App Engine 中抛出 DeadlineExceededError 异常

转载 作者:行者123 更新时间:2023-11-28 17:51:35 24 4
gpt4 key购买 nike

我正在编写一个延迟任务,旨在在 blobstore 中构建一个文件以供下载。我正在根据文档中给出的示例对代码进行建模:

http://code.google.com/appengine/articles/deferred.html

这个想法是构建代码,以便在出现 DeadlineExceededError 时处理程序可以整理并启动一个新的延迟任务以便稍后继续。

我想知道的是这个异常到底什么时候可以抛出?是否有任何操作保证是原子的,因此不会被中断?

在示例(上面引用的)中,他们在完成处理每条记录时更新一个名为 start_key 的变量,但是假设主循环在 to_put 和 to_delete 列表的扩展之间被中断,那么数据将是错误的,就像它会做的那样错过一组删除。

如果在任何时候都可以引发异常,那么它可能在 batch_write 的中途,或者在 db.put 和清除 to_put 列表之间。

这在逻辑上等同于一个线程安全问题,要解决它通常要保证原子操作和非原子操作。

这是如何工作的?

谢谢

最佳答案

DeadlineExceededError 可以随时抛出。如果有一段时间无法抛出,滥用应用程序可以简单地循环执行该代码。

您可以通过多种方式避免这种情况:

  1. 主动检查您执行了多长时间,并在截止日期前适时停止。
  2. 将异常处理程序放在可以存储最后一组已完成操作的状态的地方(例如,丢弃自抛出异常的外循环的最后一次迭代以来的任何内容)
  3. 使用没有最后期限的后端。

关于python - 什么时候可以在 Google App Engine 中抛出 DeadlineExceededError 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8862813/

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