2014-10-06 100 views
1

我寫了一點cherrypy「HelloWorld」示例,並且cp開始沒有問題。但是我只看到一個空白頁時,我做的http://domain.com:8888Cherrypy可達,但沒有顯示任何東西

的請求。如果我改變請求的端口,我得到這個資源是不可達的瀏覽器的錯誤,所以我想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

你從哪裏得到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')/foo/bar

@cp.expose 
def default(self, *args): 
    return "default {0}".format(','.join(args))