无法在WebPy中向子应用程序添加映射

时间:2012-12-04 18:22:20

标签: python django web.py uwsgi

我只想说清楚,在Windows中,工作正常,但当我尝试在我的VPS中部署此脚本时,它会失败。

这有点奇怪,因为如果我添加一个映射到主要的web应用程序实例“mainwebapp”它可以工作,但每当我将它添加到任何子应用程序时它显示为webpy“Not Found”,我敲打我的因此而靠在墙上。

在Windows中,我有Wamp 2.2。在我的Vps中我有CentOS 5,nginx和uWsgi以及相同的Python(2.7)&我的窗口中的Webpy版本。

我几乎可以肯定这是nginx / uwsgi的问题,因为当我在我的Vps中切换到apache / mod_wsgi时,它也可以像我的Wamp本地服务器一样工作。

到目前为止,这是我测试过的代码,它非常简单:

class subappcls:
     def GET(self):
          return "This will also be shown fine"


sub_mappings = (
     "/subpath", subappcls
)


#subclass web app
subwebapp = web.application( sub_mappings, globals() )



#mapped clas
class mapped_cls:
def GET(self):
     return "this mapped sub app will not be found"


#Here I add mappings:
subwebapp.add_mapping("/mapped_sub_path", mapped_cls



class appcls:
def GET(self):
     return "main app"



main_mappings = (
     "/subapp", subwebapp,
     "/app", appcls
)

mainwebapp = web.application( main_mappings, fvars=globals() )

class indexcls:
def GET(self):
     return "this will be shown just fine"

mainwebapp.add_mapping("/another",indexcls)


application = mainwebapp.wsgifunc()

当我访问时:

/ subapp / subpath #will work

/ subapp / mapped_sub_path #will not work

这样可以正常工作:

/应用

/另一

这是uwsgi日志: *在[2012年12月4日18:41:52] 上启动uWSGI 1.3(64位) 编译版本:4.1.2 20080704(Red Hat 4.1.2-52)于2012年11月24日02:21:31 os:Linux-2.6.18-194.17.4.el5xen#1 SMP Mon Oct 25 16:36:31 EDT 2010 警告:您正在以root身份运行uWSGI! (使用--uid标志) 您的进程数限制为32832 您的内存页面大小为4096字节 检测到最大文件描述符号:1024 锁定引擎:pthread强大的互斥锁 uwsgi socket 0绑定到UNIX地址/tmp/app.sock fd 3 Python版本:2.7.3(默认,2012年10月30日,06:37:20)[GCC 4.1.2 20080704(Red Hat 4.1.2-52)] 禁用Python线程支持。您可以使用--enable-threads *

启用它

编辑:我使用--enable-threads参数启用了线程,但也没有。

提前致谢。

1 个答案:

答案 0 :(得分:1)

问题似乎与重新加载器有关。如果在集成开发服务器(使用命令python code.py)中运行,则以下代码有效:

import web


web.config.debug = False  # turns off the reloader


class subappcls:
    def GET(self):
        return "This will also be shown fine"

sub_mappings = (
    "/subpath", subappcls
)

#subclass web app
subwebapp = web.application(sub_mappings, globals())


#mapped class
class mapped_cls:
    def GET(self):
        return "this mapped sub app will not be found"


#Here I add mappings:
subwebapp.add_mapping("/mapped_sub_path", mapped_cls)


class appcls:
    def GET(self):
        return "main app"


main_mappings = (
    "/subapp", subwebapp,
    "/app", appcls,
)

mainwebapp = web.application(main_mappings, globals())


class indexcls:
    def GET(self):
        return "this will be shown just fine"

mainwebapp.add_mapping("/another", indexcls)


if __name__ == "__main__":
    mainwebapp.run()
else:
    application = mainwebapp.wsgifunc()

跑步卷曲:

curl http://localhost:8080/subapp/mapped_sub_path
this mapped sub app will not be found