我正在Flask中构建一个应用程序,但我对它很新。我想做的是从外部.txt文件中取一个字符串,从中返回n个数字,等待一段时间,然后返回n + 1个数字,再等一秒,然后是n + 2个数字等。< / p>
我可以在打印到终端时使其工作,但无法让它在视图中实际返回。不知道我哪里出错,任何帮助都会非常感激。
目前,我正在获取一个挂页或“查看功能没有返回响应”,我没有想法
@app.route('/')
@app.route('/index')
def index():
class RepeatEvery(threading.Thread):
def __init__(self, interval, func, *args, **kwargs):
threading.Thread.__init__(self)
self.interval = interval # seconds between calls
self.func = func # function to call
self.args = args # optional positional argument(s) for call
self.kwargs = kwargs # optional keyword argument(s) for call
self.runable = True
def run(self):
while self.runable:
self.func(*self.args, **self.kwargs)
time.sleep(self.interval)
def stop(self):
self.runable = False
counter = 0
while counter != 5:
number = str(counter)
counter += 1
thread = RepeatEvery(1, truncate, number)
thread.start()
thread.join(1)
thread.stop()
def truncate(num):
with open(os.path.join(APP_STATIC, 'file.txt')) as f:
data = f.read()
truncated = data[:num]
return truncated `
答案 0 :(得分:2)
您可以通过using a generator:
将数据流回客户端from flask import Response
@app.route('/')
def index():
data = ""
with open(os.path.join(APP_STATIC, 'file.txt')) as f:
data = f.read()
gen = (data[:num] for num in range(1, 6))
return Response(gen, mimetype="text/plain")
知道了,然后可以为您的生成器添加暂停:
from time import sleep
def gen(data):
for num in range(1, 6):
yield data[:num]
sleep(1)