gpt4 book ai didi

python - 用 Spawning 替换 AppEngine Devserver(BaseHTTPRequestHandler 作为 WSGI)

转载 作者:行者123 更新时间:2023-12-01 06:19:29 26 4
gpt4 key购买 nike

我希望将 AppEngine 的开发服务器替换为 spawning 。 Spawning 处理标准的 wsgi 处理程序,就像 appengine 一样,因此在上面运行您的应用程序很容易。

但是 devserver 会考虑您的 app.yaml 文件,其中包含 url 重定向等。我一直在浏览 devserver 代码,并且很容易获得 BaseHTTPRequestHandler,如下所示:

from google.appengine.tools.dev_appserver import CreateRequestHandler
dev = CreateRequestHandler(os.path.dirname(__file__), '', require_indexes=False, static_caching=True)

但是 BaseHTTPRequestHandler 不是 WSGI 应用程序,所以我的猜测是我需要在它周围放置一些东西才能使其工作。有什么提示吗?

最佳答案

我认为您无法如此轻松地取出 dev_appserver 的一部分并在自定义 WSGI 服务器中使用它。 dev_appserver 做了很多“魔法”,而且它的结构并不是真正可以被拉出来并在另一个服务器中用作 WSGI 包装器(更多的是遗憾)。

您可能想查看 T wistedAE ,致力于创建替代服务环境;如果你真的想使用生成,你可能可以使用 TwistedAE 的工作作为基础。

也就是说,如果您确实想自己做,有几个选择:

  1. 您可以编写自己的填充程序来将 WSGI 与 CreateRequestHandler 返回的类连接起来。在这种情况下,您需要复制BaseHTTPServer中的接口(interface)。来自 Python SDK 的 .BaseHTTPRequestHandler。不过,将 WSGI 转换为该格式,以便 dev_appserver 代码可以将其转换回来,似乎有点反常。
  2. 您可以从 DevAppServerRequestHandler 的 _HandleRequest 方法中删除代码,修改它以与 WSGI 配合使用,并从中创建一个 WSGI 应用(如果您想 DIY,这可能是您的最佳选择)。
  3. 您可以从头开始,我相信这是 TwistedAE 采取的方法。

无论您做什么,都要记住一件事:App Engine 明确期望其应用程序有一个单线程环境。如果您希望应用程序在本地运行与在生产环境或 dev_appserver 上运行相同,请不要使用多线程方法!

关于python - 用 Spawning 替换 AppEngine Devserver(BaseHTTPRequestHandler 作为 WSGI),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1293249/

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