gpt4 book ai didi

python - GAE 错误 204 - 这是什么意思我该如何避免它?

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:08 25 4
gpt4 key购买 nike

我得到一个空白屏幕,日志中有以下警告消息:

A problem was encountered with the process that handled this request, 
causing it to exit. This is likely to cause a new process to be used for
the next request to your application. (Error code 204)

我没有别的事情可做。我大量使用 tasklet (@ndb.tasklet)、异步数据存储操作和异步 urlfetches(它是一个搜索引擎)。根据 appstats,例如,我正在将 15 分钟的处理时间缩减为 15 秒。如果我处理的数据较少,它就可以工作。如果我处理更多,它会因上述警告而失败。实例选项卡仅显示一次实例。我的预感是我正在重载该实例。

我认为额外的实例会自动启动以支持额外的负载 - 尽管实例可能只响应请求而不是 CPU/内存负载?当我启动三个不同的页面时,三个不同的实例也会启动。问题是每个请求都需要大量处理。

我可以使用任务队列来定位后端实例,但我需要知道任务何时完成并返回结果。不幸的是任务队列有no way of monitoring when a given task has been completed .

我如何(并且应该)明确地跨实例拆分处理?还有其他解决方案吗?如何避免 204 错误消息?

编辑:我提高了我的递归限制:

sys.setrecursionlimit

当我将其注释掉时,出现以下错误:

RuntimeError: maximum recursion depth exceeded

最佳答案

递归限制让我认为您将同步操作与异步操作混合在一起。尝试只使用异步操作和 yield,而不是 get_result()。或者向我们展示一些(真实的)代码。

特别是,提高递归限制最终会导致 C 级堆栈溢出,并且很可能导致进程被内核毫不客气地杀死。在那种情况下,日志也会丢失。在你提高递归限制之前,你得到了什么样的堆栈跟踪?是大约 1000 个条目,还是只有几十个条目?如果是后者,您肯定会遇到混契约(Contract)步和异步操作的问题。

请注意,有两种形式的同步操作,都应避免在 tasklet 中的任何地方(以及它调用的任何内容!):同步调用,如 ent.put()、key.get();异步调用后跟一个 get_result() 调用,例如 ent.put_async().get_result()。

关于python - GAE 错误 204 - 这是什么意思我该如何避免它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13614996/

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