用生成替换AppEngine Devserver(BaseHTTPRequestHandler作为WSGI)

2024-09-30 02:29:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用spawning替换AppEngine的devserver。生成处理标准的wsgi处理程序,就像appengine一样,因此在上面运行应用程序很容易。在

但是devserver会考虑到应用程序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应用程序,所以我想我需要在它周围添加一些东西来让它工作。有什么提示吗?在


Tags: 文件dev应用程序url处理程序yamlwsgi标准
1条回答
网友
1楼 · 发布于 2024-09-30 02:29:38

我不认为您将能够抽出dev_appserver的一部分并在定制的WSGI服务器中如此轻松地使用它。dev_appserver做了很多“魔术”,它的结构并不是真的可以被拉出并在另一个服务器上用作WSGI包装器(更遗憾的是)。在

您可能想看看TwistedAE,它正在创建一个备用服务环境;如果您真的想使用生成,您可能可以使用TwistedAE的工作作为基础。在

也就是说,如果你真的想自己做,有几个选择:

  1. 您可以编写自己的填充程序,以将WSGI与CreateRequestHandler返回的类进行接口。在这种情况下,您需要从PythonSDK复制BaseHTTPServer.BaseHTTPRequestHandler中的接口。不过,将WSGI转换成那样,只是为了让dev_appserver代码能够将其转换回来,似乎有点反常。在
  2. 您可以从DevAppServerRequestHandler的\u HandleRequest方法中取出代码,将其修改为与WSGI一起使用,然后从中创建一个WSGI应用程序(如果您想DIY,这可能是您的最佳选择)。在
  3. 你可以从头开始,我相信这是TwistedAE采取的方法。在

不管你做什么,有一件事要记住:AppEngine明确地希望它的应用程序使用单线程环境。如果你想让应用程序在本地与在生产环境中或在dev_appserver上一样工作,就不要使用多线程方法!在

相关问题 更多 >

    热门问题