簡體   English   中英

Windows Cherrypy上的Python Flask REST API

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM