访问Flask页面时如何每次运行脚本

时间:2020-01-04 08:03:41

标签: python flask

我有一个Flask应用程序,它需要另一个python文件中的数据(每次我访问 / result-var 时-我希望执行 ANOTHER_FILE 来返回已将 variable_with_data 更新为模板。 如果我正在使用 subprocess.call -我无权访问外部变量。如果我使用 import - ANOTHER_FILE 仅运行一次(要再次运行,我必须重新启动Flask应用)。但是每次从浏览器访问 / result-var 时,我都需要这个 variable_with_data

@application.route('/result-var')
def result_var():
#    subprocess.call("ANOTHER_FILE.py", shell = True)
    from ANOTHER_FILE import output_in_var
    variable_with_data = output_in_var
    return render_template('result.html', variable_with_data=variable_with_data)

请告诉我我有哪些选择。 TIA!

1 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,那么您需要做的就是将要从ANOTHER_FILE运行的内容包装到一个函数中,然后可以调用该函数。

因此,假设您有ANOTHER_FILE,其中包含以下内容:

data = read_data() 
result = process_data(data) 
output_in_var = prepare_output(result)

然后您可以将所有内容包装到一个函数中

def produces_output_in_var():
    data = read_data() 
    result = process_data(data) 
    output_in_var = prepare_output(result)

,然后调用该函数以显式运行代码(而不是在导入时隐式运行):

from ANOTHER_FILE import produces_output_in_var

@application.route('/result-var')
def result_var():
    variable_with_data = produces_output_in_var()
    return render_template('result.html', variable_with_data=variable_with_data)

另请参阅:Why is Python running my module when I import it, and how do I stop it? 以及与此相关的python文档可能会有所帮助,但它们有点技术性:https://docs.python.org/3/reference/import.html

相关问题