可以使用Cherrypy但不显示任何内容

时间:2014-10-06 23:39:10

标签: python cherrypy

我写了一篇小小的文章" HelloWorld"示例,cp开始没有问题。但是当我向http://domain.com:8888

发出请求时,我只看到一个空白页面

如果我更改了请求的端口,则会收到浏览器错误,指出此资源无法访问,因此我猜cp通常可以访问但不显示任何内容。

任何想法我做错了什么?

以下是cp的来源:

import MySQLdb as mdb
import cherrypy as cp

class HelloWorld(object):
    @cp.expose
    def index(self):
        return ("gurk")

    @cp.expose
    def default(self):
        return "default"

def run_server():
    # Set the configuration of the web server
    cp.config.update({
        'engine.autoreload.on': True,
        'log.screen': True,
        'server.socket_port': 8888,
        'server.socket_host': '0.0.0.0'
    })

    # Start the CherryPy WSGI web server
    cp.root = HelloWorld()
    cp.engine.start()
    cp.engine.block()

if __name__ == "__main__":
    cp.log("main")
    run_server()

1 个答案:

答案 0 :(得分:1)

你从哪里得到cp.root = HelloWorld()?对于属性的值,CherryPy方面没有期望,因此它比cp.blahblah = HelloWorld()更有意义。您的run_server应如下所示:

def run_server():
    # Set the configuration of the web server
    cp.config.update({
        'engine.autoreload.on': True,
        'log.screen': True,
        'server.socket_port': 8888,
        'server.socket_host': '0.0.0.0'
    })

    # Mount the application to CherryPy tree    
    cp.tree.mount(HelloWorld(), '/')

    # Start the CherryPy WSGI web server
    cp.engine.start()
    cp.engine.block()

此外,您的default处理程序似乎也不正确。它至少需要一个可变的位置参数参数,例如*args。 CherryPy会用路径段填充它,例如('foo', 'bar')的{​​{1}}。

/foo/bar