繁体   English   中英

web.py在dotcloud上与wsgi

[英]Web.py on dotcloud with wsgi

我正在尝试在dotcloud上部署我的web.py应用程序,但无法弄清楚如何做到这一点。

我仔细阅读了这个教程: http//docs.dotcloud.com/static/tutorials/firststeps/

然后我查看了http://docs.dotcloud.com/static/components/python/ ...

python服务可以托管任何与WSGI标准兼容的python Web应用程序。

这包括所有现代Python Web框架:Django,Pylons,web.py,web2py等。

...

python运行Nginx + uWSGI,由supervisord管理。 静态资产由Nginx直接提供,以获得更好的性能。

...

DotCloud依靠完善的工具和惯例来构建您的应用程序。 调整任何应用程序以在DotCloud上运行应该是微不足道的。

...

在部署应用程序时,DotCloud会查找名为wsgi.py的文件。 确保在应用程序目录的根目录中创建该文件。


谷歌搜索“web.py wsgi”导致http://webpy.org/install ,它有一系列令人眼花缭乱的指令。 我在页面上尝试了一些建议,但无法正常工作。

最有希望的前景似乎是创建一个名为wsgi.py的文件,如下所示:

import web

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

class hello:    
  def GET(self, name):
    if not name: 
      name = 'World'
    return 'Hello, ' + name + '!'

app = web.application(urls, globals(), autoreload=False)
application = app.wsgifunc()

我还在它旁边创建了一个空的__init__.py

然后我做了:

dotcloud create jca_hello.py
dotcloud deploy -t python jca_hello.www
dotcloud push jca_hello.www .

但现在当我去http://www.jca_hello.dotcloud.com/时,我看到的是:

uWSGI错误

找不到wsgi应用程序

有任何想法吗?

我是web.py的用户,顺便说一下我在DotCloud工作:-)

我们使用uWSGI来运行您的WSGI应用程序。 关键是uWSGI正在寻找名为“application”的变量。

这是我通常做的事情:

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

if __name__ == '__main__':
    app.run()
else:
    web.config.debug = False
    application = app.wsgifunc()

因此,您可以继续在本地计算机上使用您的应用程序:

$ python ./wsgi.py

并且在禁用调试模式的情况下将其推向生产(当然是在DotCloud上;)

这是您更正的wsgi.py文件:

import web

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

class Hello(object):

    def GET(self, name):
        if not name:
            name = 'World'
        return 'Hello, ' + name + '!'

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

if __name__ == '__main__':
    app.run()
else:
    web.config.debug = False
    application = app.wsgifunc()

谨防正确使用你的wsgi.py。

还要确保您的approot中有一个名为“requirements.txt”的文件,其中包含:

web.py

与此同时,如果您的部署有任何问题,请随时联系DotCloud支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM