因此,我正在制作一个flask应用程序,使用backtracker构建团队配置。在后端的一切都很好,但我有麻烦服务的内容。这不是制作的东西,只是我和我朋友的剧本。我将stdOut捕获到StringIO()对象中。然后我将其写入一个文件并将该文件提供给浏览器。问题是,在某个地方,缓冲区没有被清除,我在每个请求上都会得到重复的数据。你知道吗
编辑:我捕获STDOUT以便保留backtracker的原始实现。即:运行回溯输出到终端,运行应用程序将运行以下行为。这是好的设计原则吗?你知道吗
@app.route('/<solutions>', methods=['GET'])
def getTeams(solutions=1):
f = open("tmp.txt", "w")
solutions = int(solutions)
old_stdout = sys.stdout
old_stdout.flush()
sys.stdout = mystdout = StringIO()
teams.main(solutions)
sys.stdout = old_stdout
f.write(mystdout.getvalue())
f.close()
mystdout.seek(0)
mystdout.truncate(0)
return send_file("tmp.txt")
工作正常,每次运行时文件都会清除,但网页的输出如下所示: 第一反应
Starting backtracker...
Printing 1 solutions...
TEAM 1 TEAM 2
------- ---------------------- -------------------
TOP Name: BilyBobLongSlong Name: auzzi29
MID Name: balberry13 Name: ZeSwagerWagon
JUNLGE Name: Lemme Dunk First Name: MackAttack599
ADC Name: RINK Name: sptfire128
SUPPORT Name: JCKing Name: rohan72699
第二反应:
Starting backtracker...
Printing 1 solutions...
TEAM 1 TEAM 2
------- ---------------------- -------------------
TOP Name: BilyBobLongSlong Name: auzzi29
MID Name: balberry13 Name: ZeSwagerWagon
JUNLGE Name: Lemme Dunk First Name: MackAttack599
ADC Name: RINK Name: sptfire128
SUPPORT Name: JCKing Name: rohan72699
TEAM 1 TEAM 2
------- ---------------------- -------------------
TOP Name: BilyBobLongSlong Name: ZeSwagerWagon
MID Name: auzzi29 Name: MackAttack599
JUNLGE Name: balberry13 Name: JCKing
ADC Name: sptfire128 Name: RINK
SUPPORT Name: Lemme Dunk First Name: rohan72699
而每一个回应都会叠加更多。我不太清楚为什么StringIO()会不清晰,因为我每次运行代码时都会将它搜索到0并截断它。。。我很困惑。谢谢!你知道吗
更新:我已经检查了StringIO上的文档,它应该是一个文件。所以我迷路了。我还将StringIO中的内容print()打印到命令行,以排除与临时文件进行某些奇怪交互的可能性,正如所怀疑的那样,打印StringIO是相同的未截断输出。你知道吗
这可能是某种虫子吗?我不明白输出会持续在哪里。。。。六羟甲基三聚氰胺六甲醚。。。。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐