gpt4 book ai didi

python - WSGI 应用程序中的 cherrypy 和相对路径

转载 作者:太空狗 更新时间:2023-10-30 00:18:15 25 4
gpt4 key购买 nike

在 apache 上运行带有 mod_wsgi 的 cherrypy 以及另一个 php 应用程序。 cherrypy 应用程序未安装在 root 上,而是通过 apache 配置文件中的 WSGIScriptAlias 安装在“localhost/apps/myapp”之类的东西上。

在 testapp.py 中,我尝试了以下操作,当我尝试在浏览器中访问 localhost/apps/myapp 时:

app = cherrypy.tree.mount(MyApp(), '', 'settings.config') #FAILS WITH 404

app = cherrypy.tree.mount(MyApp(), '/apps/myapp', 'settings.config') # WORKS

第一种情况失败,因为 cherrypy 期望位于服务器根目录,而不是相对于它在 apache 中通过 WSGI 安装的位置。

是否有一种首选方法可以使 cherrypy 应用程序相对于它们在 WSGIScriptAlias 下安装在 apache 中的路径工作?

基本上,我将在几个不同的路径下运行几个 cherrypy 应用程序,并且更喜欢 apache 处理调度(即 cherrypy 只运行应用程序而不用担心相对路径)。这样我就可以避免每次服务器上的一些相对路径发生变化时更新几个不同的 python 文件/配置文件。

有什么建议吗?

顺便说一句,cherrypy 应用程序当前传递给 wsgi 应用程序如下:

app = cherrypy.tree.mount(HelloWorld(), '', 'settings.config')
return app(environ, start_response)

最佳答案

我正在这样做,尽管这需要 cherrypy 知道相对路径:

class Dir: pass
root = Dir()
root.apps = Dir()
root.apps.myapp = MyApp()
cherrypy.tree.mount(root)

这使我能够以我需要的任何方式构建应用程序。我使用的是 nginx 而不是 Apache,但我认为这不会有任何区别。尽管如果您使用长路径且中间没有太多其他内容,它会变得有点冗长。

cherrypy可以支持other dispatchers这可能更适合您正在尝试做的事情,或者您可能需要编写一个自定义的。

关于python - WSGI 应用程序中的 cherrypy 和相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4129929/

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