首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >web.py和gunicorn

web.py和gunicorn
EN

Stack Overflow用户
提问于 2012-12-02 14:54:20
回答 1查看 1.8K关注 0票数 4

我的问题基本上是标题中的内容:如何设置gunicorn来运行web.py应用程序?(另外,如果有任何不同,我如何在heroku上做到这一点?)

我已经使用内置的cherrypy在heroku上运行了我的应用程序,但是我还不能让gunicorn与web.py一起工作(我只是不知道从哪里开始--我找不到任何教程)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-04 07:40:25

恐怕我对Heroku不熟悉,但我可以回答你的基本问题。

gunicorn是一个HTTP服务器,用于通过WSGI运行Python web应用程序。web.py是一个使用WSGI创建Python web应用程序的框架。

因此,您实际上不需要教程来同时使用这两者,因为您需要做的就是弄清楚如何将web.py应用程序的WSGI入口点传递给gunicorn。WSGI应用程序只是一个具有正确接口的Python可调用程序,即它接受特定的参数并返回特定的响应。有关详细信息,请参阅this WSGI tutorial

web.py教程中的"hello world“应用程序看起来像这样的test.py:

代码语言:javascript
复制
import web

urls = (
    '/', 'index'
)

class index:
    def GET(self):
        return "Hello, world!"

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

但这并不会暴露gunicorn所需要的WSGI应用程序。

web.py通过web.applicationwsgifunc方法提供了一个WSGI应用程序。我们可以通过在index类后面添加以下内容来将其添加到test.py中:

代码语言:javascript
复制
# For serving using any wsgi server
wsgi_app = web.application(urls, globals()).wsgifunc()

这基本上就是web.py文档在使用Apache + mod_wsgi时在部署部分告诉你要做的事情-- Python代码对我们来说与gunicorn是一样的,这不是巧合,因为这正是WSGI给你的--一种标准的方式来编写Python,这样它就可以使用任何支持WSGI的服务器进行部署。

正如gunicorn docs中所解释的,我们可以将gunicorn指向test模块的wsgi_app成员,如下所示:

代码语言:javascript
复制
(tmp)day@office:~/tmp$ gunicorn test:wsgi_app
2012-12-03 23:31:11 [19265] [INFO] Starting gunicorn 0.16.1
2012-12-03 23:31:11 [19265] [INFO] Listening at: http://127.0.0.1:8000 (19265)
2012-12-03 23:31:11 [19265] [INFO] Using worker: sync
2012-12-03 23:31:11 [19268] [INFO] Booting worker with pid: 19268
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13667103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档