我将Raspberry Pi 3设置为服务器,并希望将多个(不超过五个)客户端连接到该网络。我最近遇到了Flask for Python。我处理了一个在堆栈溢出中发现here的示例。它按预期工作。当我连接另一个客户端时,当我添加“ threaded = True”时,程序仍然可以工作。但是,第二个页面不是仅打印0、1、2、3、4、5 ......,而是打印了0、2、4、6、8 ....,并且也更改了第一个页面。>
我问了一些人,我有点理解为什么会这样。该实例被调用两次,这就是为什么输出是这样的原因。但我很高兴听到它再次解释。
此外,服务器仅在打开网页时启动。我希望服务器开始计算i的值,而与打开的网页无关。网页打开后,应该以i的当前值开头。
import itertools
import time
from flask import Flask, Response, redirect, request, url_for
app = Flask(__name__)
i = 0
@app.route('/')
def index():
if request.headers.get('accept') == 'text/event-stream':
def events():
while (True)
yield "data: %d\n\n" % i
time.sleep(.1) # an artificial delay
i += 1
return Response(events(), content_type='text/event-stream')
return redirect(url_for('static', filename='index.html'))
if __name__ == "__main__":
app.run(host='localhost', port=23423, threaded=True)
我希望我的最终程序要做的是,当我启动python程序(服务器)时,我希望该程序计算i的值。当我打开网页时,它应该显示上一次迭代中计算的i的值。并且所有打开的网页应显示相同的i值。
有一个单独运行的程序来计算i的值。另一个运行flask的程序,并在浏览器中打印i的值。
我希望我能很好地说明我的情况。谢谢您的帮助。