如何在单独的程序中运行服务器代码,并在单独的程序中运行flask,并动态地从服务器获取值?

时间:2019-05-29 13:52:15

标签: python flask eventsource

我将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的值。

我希望我能很好地说明我的情况。谢谢您的帮助。

0 个答案:

没有答案