首页 > 解决方案 > 从 javascript 与正在运行的 python 通信的正确方法

问题描述

我的目标:

  1. 正在运行的python不断改变变量的值。
  2. 使用html和javascript在浏览器上实时显示变化的值,只要python正在改变值。

以下是我的谷歌解决方案:

  1. 使用Flask编写 Python 代码
  2. 从 javascript请求通过Ajax运行 python
  3. python 将变量作为 JSON 响应回 javascript

基于这个解决方案,我有以下问题,如果有任何误解,请随时纠正我。

  1. 必须先手动执行 python,然后 javascript 才能发送 ajax 请求到http://localhost:5000/[...some @app.route()]. 我需要 python在第一个 ajax 请求之后开始无限运行(while 循环)。

  2. Flask python不能有 while 循环。不确定app.run()Flask 中的机制。

  3. 一旦实现了第一点,一旦 python 更改变量,javascript 还必须不断更新html。现在看来我必须继续发送 ajax 请求才能从 python 获取变量。

非常感谢任何信息来解决我的问题!

标签: javascriptpythonajaxwindowsflask

解决方案


基本上,你需要三个部分

  • 你的python循环A
  • 网络应用程序 B
  • 和一个 javascript 应用程序 C

您可以将 A+B 组合到一个进程中,在这种情况下,您必须在单独的线程中运行循环,或者您可以使用任何可用的 IPC 方式(如共享内存/管道/套接字)在 A 和 B 之间进行通信。一个简单的解决方案是使用数据库服务器,A 向该服务器写入数据,B 从该服务器读取数据。

如果 A 和 B 是分开的,那么 B 不一定是 python,你可以用 js 或 php 或其他任何方式编写它。

为了避免在客户端进行轮询,可以使用WebSockets在 B 和 C 之间进行通信。


推荐阅读