Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从Flask API调用中删除全局变量?_Python_Python 3.x_Flask_Global Variables - Fatal编程技术网

Python 如何从Flask API调用中删除全局变量?

Python 如何从Flask API调用中删除全局变量?,python,python-3.x,flask,global-variables,Python,Python 3.x,Flask,Global Variables,我正在开发一个Flask应用程序,它将运行Foo。运行Foo后,应该可以点击hostname:8080处的端点来执行一些API调用,以更改Foo的状态 下面是一个相当小(虽然不完整)的示例。引用的方法和函数并不十分重要,因为问题是关于其状态受影响的全局对象 __foo = None app = Flask(__name__) @app.route("/start_foo") def start_foo(): return __foo._do_foo_init() or "" def

我正在开发一个Flask应用程序,它将运行
Foo
。运行
Foo
后,应该可以点击
hostname:8080
处的端点来执行一些API调用,以更改
Foo
的状态

下面是一个相当小(虽然不完整)的示例。引用的方法和函数并不十分重要,因为问题是关于其状态受影响的全局对象

__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\u foo
时,她将提供一个
,它是
foo
的子类,但这并不重要

我想让
@app.route
成为一个类的方法,并让
foo
成为这个类的一员,但我不知道这在Flask中是否可行


是否有人建议如何删除上述应用程序中的全局对象?

在flask中,您应该将应用程序全局对象存储在flask.g()中。确实,这是应用程序的“本地”,但在flask中,在同一个python解释器中应该可以有多个应用程序。该条款规定:

因为Flask设计的支柱之一是在同一个Python进程中可以有多个应用程序


因此,除了配置之外的所有内容都不应该是全局的,而应该是flask应用程序的本地内容。

您看过吗?@code\u onkel我认为这对于在应用程序上下文中创建的资源非常有效。由于
run\u foo
将接受以前创建的
foo
,因此我不确定它是否有效。不过,我可能误解了它的用途!我过一会儿再试试。我玩了一会儿就会回来报到。在此期间,请投一票!我不确定flask代理如何与线程交互,因此可能存在问题。但我想这也取决于你在延迟注册中到底做了什么。