如何在每次访问Flask pag时运行脚本

2024-04-27 19:00:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Flask应用程序,它需要来自另一个python文件的数据(每次访问/result var-我希望执行另一个\u文件,将更新的变量\u和\u数据返回到模板。 如果我使用子流程调用-我无法访问外部变量。如果我正在使用导入-,另一个文件只运行一次(要再次运行,我必须重新启动Flask应用程序)。但每次从浏览器访问结果变量时,我都需要这个变量。你知道吗

@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)

请给我一个主意,我有什么选择。蒂亚!你知道吗


Tags: 文件数据in模板应用程序flaskoutputdata
1条回答
网友
1楼 · 发布于 2024-04-27 19:00:38

如果我正确理解了这个问题,那么您需要做的是将要从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

相关问题 更多 >