【发布时间】:2012-03-05 18:33:26
【问题描述】:
我对如何做一些我认为很简单的事情有点困惑。我有一个使用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 和另一个模块开始时?
【问题讨论】:
-
这可能会回答这个问题:stackoverflow.com/questions/27465533/…
标签: python web-frameworks flask werkzeug