Day*_*Day 13
我担心我不熟悉Heroku,但我可以回答你的基本问题.
gunicorn是一个HTTP服务器,用于通过WSGI运行Python Web应用程序.web.py是一个使用WSGI创建Python Web应用程序的框架.
因此,您并不需要一起使用这两者的教程,因为您需要做的就是弄清楚如何将web.py应用程序的WSGI入口点传递给gunicorn.WSGI应用程序只是一个Python可调用,具有正确的接口,即它需要某些参数并返回一定的响应.有关更多信息,请参阅此WSGI教程.
web.py教程中的"hello world"应用程序看起来像这个test.py:
import web
urls = (
'/', 'index'
)
class index:
def GET(self):
return "Hello, world!"
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
Run Code Online (Sandbox Code Playgroud)
但这并没有暴露出gunicorn需要的WSGI应用程序.
web.py通过wsgifunc方法提供WSGI应用程序web.application.我们可以通过在index类之后添加以下内容将其添加到test.py :
# For serving using any wsgi server
wsgi_app = web.application(urls, globals()).wsgifunc()
Run Code Online (Sandbox Code Playgroud)
这基本上是web.py文档告诉你在使用Apache + mod_wsgi时在部署部分中做的事情- 事实上Python代码与gunicorn相同并不是巧合,因为这正是WSGI给你的 -编写Python的标准方法,以便可以使用任何支持WSGI的服务器进行部署.
正如gunicorn文档中所解释的那样,我们可以将gunicorn指向wsgi_app该test模块的成员,如下所示:
(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
Run Code Online (Sandbox Code Playgroud)