【问题标题】:Gunicorn does not execute statements within mainGunicorn 不在 main 中执行语句
【发布时间】:2019-10-27 08:45:44
【问题描述】:
from flask import Flask, request, jsonify


app = Flask(__name__)
@app.route('/api', methods=['POST'])
def predict():
    pass
    #Some statements to predict something


if __name__ == '__main__':
    print("Hello World")
    app.run(host='0.0.0.0', debug=True)

当我运行时 gunicorn -b 0.0.0.0 app:app我没有看到打印语句。但是,当我以python app.py 运行时,会打印“Hello World”。应用程序运行但它不执行打印语句。知道是什么导致 Gunicorn 忽略 main() 中的内容吗?

【问题讨论】:

  • 这正是if 语句的用途。
  • 为什么您希望您的测试驱动程序在真正的驱动程序运行时运行?
  • @KlausD.:我开始明白你的意思了。基本上我们调用应用程序直接从gunicorn 语句运行。

标签: python flask gunicorn


【解决方案1】:

当您以gunicorn -b 0.0.0.0 app:app 运行时,gunicorn 只会从您的app.py 文件中导入应用程序。它将跳过 if __name__ == '__main__' 块中的语句,因此您看不到 print 语句的输出。

但是当你以python app.py 运行时,if __name__ == '__main__' 块将是入口点,因此 print 语句会被执行。

还要注意,if __name__ == '__main__' 中的 app.run(host='0.0.0.0', debug=True) 行将启动开发服务器,而不是 gunicorn 服务器。

在此处附加类似问题的链接: code before app.run() can not be run in gunicorn+flask

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多