0

我只是想明确一点,在 Windows 中,工作正常,但是当我尝试在我的 VPS 中部署这个脚本时它失败了。

这有点奇怪,因为如果我将映射添加到“mainwebapp”的主 Web 应用程序实例,它就可以工作,但是每当我将它添加到任何子应用程序时,它都会显示为 webpy“Not Found”,我正在用头撞墙因为这个。

在 Windows 中,我有 Wamp 2.2。在我的 Vps 中,我有 CentOS 5、带有 uWsgi 的 nginx 以及来自我的 Windows 的相同 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 #会起作用

/subapp/mapped_sub_path #将不起作用

这将工作得很好:

/应用程序

/其他

这是 uwsgi 日志: * 在 [Tue Dec 4 18:41:52 2012] 开始 uWSGI 1.3 (64bit) 使用版本编译:4.1.2 20080704 (Red Hat 4.1.2-52) 于 2012 年 11 月 24 日 02:21:31 操作系统:Linux-2.6.18-194.17.4.el5xen #1 SMP Mon Oct 25 16:36:31美国东部时间 2010 警告:您正在以 root 身份运行 uWSGI !!!(使用 --uid 标志) 您的进程数限制为 32832 您的内存页面大小为 4096 字节检测到最大文件描述符数:1024 锁定引擎:pthread 强大的互斥锁 uwsgi 套接字 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 参数启用了线程,但也没有工作。

提前致谢。

4

1 回答 1

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
于 2012-12-04T21:14:26.453 回答