无法更改Python Web.py应用程序的Linode示例

时间:2014-02-14 13:47:14

标签: python uwsgi web.py

我正在关注这个web.py Hello World示例:

https://library.linode.com/web-servers/nginx/python-uwsgi/ubuntu-12.04-precise-pangolin#sph_more-information

现在我得到了“Hello World!”上面的例子完全可以在我的浏览器中运行,但是当我想根据需要更改应用程序时,例如像这样制作一个完整的AJAX应用程序:

urls = ('/(.*)', 'Index')

application = web.application(urls, globals())

web.config.debug = True

class Index:
def POST(self):
    content = web.input(_method='post')
    return 'Ajax Test Data'

if __name__ == '__main__':application.run()

我收到以下错误(即使我对Linode的“应用程序”功能进行了少量更改)

  

uWSGI错误

     

找不到Python应用程序

如何才能使用我自己的代码?


我卸载了Debian软件包,并使用内置Python安装了pip软件包。我还必须清理/统一我的.ini和-xml配置文件。

然后我用

启动了我的应用程序
uwsgi -s /tmp/uwsgi.sock -w app

最大的帮助来自this document

但是,我遇到了web module not found error,所以我回到了Linode示例,我正在摆弄它,仍然试图从应用程序包装器中调用我的应用程序。

2 个答案:

答案 0 :(得分:1)

嗨,请看这个stackoverflow帖子:uwsgi error python application not found

您需要终止旧的uWSGI进程,该进程正在搜索应用程序的旧实例,因为您更改了该实例,该实例已不再存在。

答案 1 :(得分:0)

您需要将WSGI应用程序“导出”到uWSGI,而不是使用if __name__ == '__main__':application.run()运行应用程序。默认情况下,uWSGI会查找名为application的WSGI可调用对象,但您拥有的application不是WSGI可调用对象。因此,请移除if __name__ == '__main__':application.run()并将application = web.application(urls, globals())替换为application = web.application(urls, globals()).wsgifunc()