【问题标题】:Run Flask Restplus APIs through Gunicorn通过 Gunicorn 运行 Flask Restplus API
【发布时间】:2020-11-09 03:56:45
【问题描述】:

我有一个示例 Flask-RestPlus 应用程序 myapp.py

from flask import Flask
from flask_restplus import Resource, API

API = Api(version='1.0', title='my_routes')
MY_NAMESPACE = API.namespace('v1.0/routes', description='v1.0 routes')


def initialize():
    app = Flask(__name__)
    API.init_app(app)
    API.add_namespace(MY_NAMESPACE)
    return app

@MY_NAMESPACE.route('/hello')
class HelloWorld(Resource):
    def get(self):
        return {'hello': 'world'}

if __name__ == '__main__':
    MY_ROUTE = initialize()
    MY_ROUTE.run(host='0.0.0.0', port=8080)

如果我正在运行 python myapp.py,这可以正常工作。由于我想在生产环境中运行此代码,因此我想使用 Gunicorn。我在我的 UNIX 机器上安装了 gunicorn。 https://gunicorn.org/ 的示例代码工作得很好。在我的情况下如何运行代码?我试过了:

gunicorn -w 4 myapp:initialize
gunicorn -w 4 "myapp:initialize()"
gunicorn -w 4 myapp:main

但他们都没有工作。我必须对代码进行一些更改吗?

【问题讨论】:

    标签: python flask gunicorn flask-restplus


    【解决方案1】:

    在您的 myapp.py 中,发挥您的作用:

    if __name__ == '__main__':
        MY_ROUTE = initialize()
        MY_ROUTE.run(host='0.0.0.0', port=8080)
    

    进入:

    app = initialize() # app has to be accessible outside if
    
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=8080)
    

    然后运行

    gunicorn --bind 0.0.0.0:8080 --workers 4 myapp:app --log-level debug 
    

    如果您想在生产模式下运行,请指定--log-level info

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-20
      • 2019-10-26
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      相关资源
      最近更新 更多