[英]Python Flask REST API on Windows Cherrypy
我正在嘗試創建python Flask REST Web API。 由於Flask開發服務器不適合生產,因此我嘗試使用cherrypy應用程序服務器。
以下是我試圖通過cherrypy公開的Flask應用程序
from flask import Flask,request
from flask_restful import Api,Resource, reqparse
app= Flask(__name__)
api = Api(app)
class Main (Resource):
def get(self):
return "Hello Flask"
if __name__ == '__main__':
api.add_resource(Main, "/testapp/")
app.run(debug=True)
以下是我創建的cherrypy腳本
try:
from cheroot.wsgi import Server as WSGIServer, PathInfoDispatcher
except ImportError:
from cherrypy.wsgiserver import CherryPyWSGIServer as WSGIServer, WSGIPathInfoDispatcher as PathInfoDispatcher
from stack import app
d = PathInfoDispatcher({'/': app})
server = WSGIServer(('127.0.0.1', 8080), d)
if __name__ == '__main__':
try:
server.start()
print("started")
except KeyboardInterrupt:
server.stop()
我已將此腳本保存為項目目錄中的“ run.py”。 當我運行它時,它沒有顯示任何錯誤,這使我覺得這是正確的。
但不幸的是,我無法使用url訪問它
從理論上講,此API的網址應類似於http://127.0.0.1:8080/testapp/
但是它會在消息中拋出404
“在服務器上找不到請求的URL。如果您手動輸入URL,請檢查拼寫,然后重試。”
我究竟做錯了什么 ?
該
api.add_resource(Main, "/testapp/")
如果您的文件來自run.py作為條件,則不會執行文件stack.py中的文件
if __name__ == '__main__':
...
是不正確的(在stack.py的上下文中)。
將對api.add_resource(...)的調用移動到if-main-condition之外的位置(因此始終執行)應該可以解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.