#main.py
from flask import Flask
app = Flask(__name__)
if __name__ == '__main__':
print("before app run")
app.run() # , threaded=True host='0.0.0.0', debug=True, port=5000
运行gunicorn如下:
gunicorn -b 0.0.0.0:8000 --preload main:app
结果不会打印“app unn之前”。我该如何运行打印代码?如果我不想在if __name__ == '__main__'
答案 0 :(得分:1)
实际上,当您使用before app run
python main.py
虽然你可以尝试before_first_request
来完成这个伎俩,但Gunicorn是不可能的
@app.before_first_request
def execute_this():
print("before app run")
答案 1 :(得分:1)
Gunicorn没有运行该文件,但import
正在运行它。这意味着__name__ != "__main__"
和您的代码永远不会运行。
Gunicorn在导入文件后手动调用app.run()
。
解决方案是确保您的代码在导入时运行:
> cat main.py
from flask import Flask
app = Flask(__name__)
print "before main stanza"
if __name__ == "__main__":
print "in main stanza"
app.run()
然后运行应用程序:
> gunicorn -b 0.0.0.0:8000 --preload main:app
before main stanza
[2017-06-07 08:33:15 +0100] [8865] [INFO] Starting gunicorn 19.7.1
[2017-06-07 08:33:15 +0100] [8865] [INFO] Listening at: http://0.0.0.0:8000 (8865)
...