我有一个烧瓶应用程序,它提供了一个网页,允许用户通过点击按钮来运行功能:
from flask import Flask, render_template, redirect, request, url_for
from xml_identifiersearch import searchXML, printHTML
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/', methods=['POST'])
def gateway():
if request.form['submit'] == 'Identifier Search':
return redirect(url_for('identifier_home'))
@app.route('/id/')
def identifier_home():
return render_template('id_home.html')
@app.route('/id/', methods=['POST'])
def identifier_search():
printHTML(request.form['input'])
return redirect(url_for('index'))
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000,debug=True)
但是,正在运行的名为“printHTML”的函数涉及打开一个文件,然后将html代码写入其中。
从烧瓶代码中可以看出,在运行该函数后,应用程序将返回索引页面。但是,由于某种原因,在重定向回索引页面后,该功能将停止正常工作。
它仍将打开正在写入另一个选项卡的文件的副本,但它实际上不会打开该文件并再次写入该文件。以下是该函数代码的片段:
def printHTML(search):
f = open("output.html", "w") #output to a single html file
print >>f, '<html><head><link rel="stylesheet" type="text/css" href="my_style.css"></head><body><table border="1">'
print >>f, "<tr>" #print the table headers
print >>f, "<th>File Name</th>"
print >>f, "<th>Creation Time</th>"
print >>f, "<th>Correlation ID</th>"
print >>f, "<th>Reporter Location</th>"
print >>f, "<th>Event Name</th>"
print >>f, "<th colspan='100'>Description </th>"
print >>f, "</tr>"
f.close()
new=2
url="file:///Users/dinakarguthy/Documents/main2/output.html"
webbrowser.open(url,new=new)
所以我的问题是:
f = open(...)和f.close()内函数的所有部分都不会多次运行。他们只在第一次工作,之后他们根本不工作,除非我重新启动我的烧瓶服务器。 output.html文件也没有被截断,这应该在
时发生f = open("output.html", "w")
直线运行。这意味着由于某种原因线路根本没有运行。但是,该函数的其余部分,即使用output.html文件打开一个新选项卡的部分仍为STILL FUNCTIONS。
这意味着我的烧瓶应用程序正在调用该函数,但由于某种原因,在网络服务器启动后第一次这样做时,它无法打开文件。
概要
我有一个运行python函数的烧瓶应用程序。烧瓶应用程序似乎运行正常,它正确调用该功能。但是,在第一次之后,函数的open()行似乎没有正确执行。功能中的其他所有功能都有效。唯一的解决方案是重新启动烧瓶应用程序的实例并重新启动Web服务器。
声明: 这是我第一次询问有关堆栈交换的问题。如果我的格式或礼仪或提供的信息不充分或不合适,请告诉我,我会尽力解决。