gpt4 book ai didi

python - 使用 appengine/python 时,zipimported 模块导入会在内存中缓存多长时间?有没有办法将它们保留在内存中?

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

我最近上传了一个使用 django appengine 补丁的应用程序,目前有一个每两分钟运行一次的 cron 作业。每次调用工作 URL 时都会消耗相当多的资源

/worker_url  200 7633ms 34275cpu_ms 28116api_ms

这是因为每次调用时它都会对所有 django 库等进行冷 zipimport。

  • 导入的模块在内存中保留多长时间?
  • 有没有办法将这些模块保留在内存中,这样即使后续调用不在这些模块保留在内存中的时间范围内,它们仍然不会调用开销?

最佳答案

只要应用程序引擎在同一节点的同一进程中为一个或多个请求提供服务,它就会根据正常的 Python 语义将所有内容保留在内存中;如果需要这些资源,该进程就会消失(因此它以前拥有的内存中不会保留任何内容),并且可以随时启动新进程(在同一节点或不同节点上)来服务请求(无论其他进程是否正在服务)其他请求仍在运行或未运行)。这很像快速 CGI 模型:您可以确保单个请求中的正常语义,但除此之外,0 到 N(无上限)之间的任何不同节点都可能正在运行您的代码,每个节点按顺序提供 0 到 N 之间的任何内容。 K(无上限)个不同的请求。

您无法“保留在内存中”(对于 zip 导入的模块或其他任何内容)。

为了完整起见,让我提一下memcache,它是对应用程序引擎运行时的显式提示/请求,以将某些内容保存在特殊形式的内存中,这是一个在运行代码的所有进程之间共享的分布式哈希表 - 这很难,但并不困难不可能用于导入的模块(您需要非常复杂的导入 Hook ),并且我建议不要开发此类 Hook 所需的努力,因为即使存在此类明确的提示,应用程序引擎运行时仍然可以随时选择弹出您的任何内容不管怎样,我们已经把它藏在缓存里了。

相反 - 我不确定为什么 cron 作业特别需要所有 django,也不知道为什么你要 zipimporting 它而不是仅仅使用现在随应用程序引擎一起提供的 1.0.2,根据 the docs ——想详细说明一下吗?这可能是一个可供您优化的有用问题。

关于python - 使用 appengine/python 时,zipimported 模块导入会在内存中缓存多长时间?有没有办法将它们保留在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1233826/

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