我对如何做一些我认为很简单的事情有点困惑。我有一个使用Flask
. 它看起来像这样:
from flask import Flask
app = Flask(__name__)
def _run_on_start(a_string):
print "doing something important with %s" % a_string
@app.route('/')
def root():
return 'hello world'
if __name__ == "__main__":
if len(sys.argv) < 2:
raise Exception("Must provide domain for application execution.")
else:
DOM = sys.argv[1]
_run_on_start("%s" % DOM)
app.run(debug=True)
我发现我的终端正在输出打印语句,_run_on_start
但不是其他常用的 Flask 应用程序调试代码。如果我在 app.run 之前删除调用,输出是正常的。此外,我发现_run_on_start
在启动时要重复两次的输出,尽管我不知道它是否是一些奇怪的输出或者该函数实际上被调用了两次。
我假设这不是在调用之前添加函数调用的正确方法app.run
。我查看了 Flask 文档,发现提到了可以使用的各种装饰器,它们允许您在某些请求之前/之后执行一个函数,但我想在应用服务器运行时执行调用。
此外,我意识到,如果我从另一个模块调用这个模块,而不是当__name__ != "__main__"
我没有接到我的_run_on_start
.
这里的正确方法是什么?在这两种情况下,当我从 CL 和另一个模块开始时?