【发布时间】:2016-06-28 11:29:58
【问题描述】:
我正在开发一个将运行Foo 的 Flask 应用程序。一旦Foo 运行,应该可以点击hostname:8080 的端点来执行一些改变Foo 状态的API 调用。
下面是一个相当小(虽然不完整)的例子。引用的方法和函数并不是非常重要,因为问题是关于状态受到影响的全局对象。
__foo = None
app = Flask(__name__)
@app.route("/start_foo")
def start_foo():
return __foo._do_foo_init() or ""
def run_foo(foo, debug=False):
"""
Entry point for clients to run a foo
:param foo:
:return:
"""
global __foo
__foo = foo
t = threading.Thread(target=delayed_registration, args=(foo,))
t.start()
app.run(host=hostname, debug=debug, port=8080)
当用户调用run_foo 时,她将提供一个Bar,它是Foo 的子类,但这不重要。
我在想使@app.route 成为一个类的方法并将foo 作为类的成员,但我不知道这在Flask 中是否可行。
有没有人有关于如何删除上述应用程序中的全局__foo 的建议?
【问题讨论】:
-
@code_onkel 我认为这适用于在应用程序上下文中创建的资源。由于
run_foo将接受以前创建的Foo,我不确定它是否会起作用。不过,我可能会误解它的用途!
标签: python python-3.x flask global-variables