2012-08-28 127 views
0

我試過http://flask.pocoo.org/snippets/24/上的方法讓燒瓶在CheryPy服務器上工作,並且它工作起來,目前爲止沒有問題。但除了「/」之外,我無法路由任何其他內容。例如,如果我想要路由到localhost/xyz,它會返回「Hello World」。CherryPy上的燒瓶路由問題

我應該爲每條路徑創建單個Flask應用程序嗎?

的server.py是:

from cherrypy import wsgiserver 
from qwe import app 

d=wsgiserver.WSGIPathInfoDispatcher({"/":app,"/xyz":app}) 
server=wsgiserver.CherryPyWSGIServer(('0.0.0.0',80),d) 

if __name__ == '__main__': 
    try: 
     server.start() 
    except KeyboardInterrupt: 
     server.stop() 

的qwe.py是:

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World" 

@app.route("/xyz") 
def ff(): 
    return "Test1" 
+0

刪除' 「/ XYZ」:app' – jfs

+0

@ J.F.Sebastian請添加爲回答 – plaes

+0

@ J.F。塞巴斯蒂安刪除並獲得404本地localhost/xyz – kilkurdu

回答

2

它應該是這樣的:

app.py:

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def root(): 
    return "Hello World!" 

@app.route("/xyz") 
def xyz(): 
    return "Hello XYZ!" 

if __name__ == "__main__": 
    app.run() 

server.py:

from cherrypy import wsgiserver 
from app import app 

d = wsgiserver.WSGIPathInfoDispatcher({'/': app}) 
server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 9999), d) 

if __name__ == '__main__': 
    try: 
     server.start() 
    except KeyboardInterrupt: 
     server.stop() 

http://localhost:9999並獲得Hello World!,然後去http://localhost:9999/xyz並獲得Hello XYZ!

+0

它的工作,謝謝,但爲什麼我不能使它對端口80有用? – kilkurdu

+2

也許另一個應用程序充當該端口上的服務器? Skype的? – zenpoy

+0

耶剛剛意識到這一點。現在很好,謝謝。 – kilkurdu