从javascript与正在运行的python通信的正确方法

时间:2018-11-14 16:24:37

标签: javascript python ajax windows flask

我的目标:

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

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

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

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

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

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

  3. 达到第一点后,一旦python更改了变量,javascript也必须保持更新。现在看来,我必须继续发送ajax请求才能从python获取变量。

真的很感谢有任何信息可以解决我的问题!

2 个答案:

答案 0 :(得分:3)

基本上,您需要三个部分

  • 您的python循环A
  • Web应用程序B
  • 和一个JavaScript应用程序C

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

如果A和B是分开的,那么B不必是python,您可以用js或php或其他任何语言编写它。

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

答案 1 :(得分:0)

您将不得不在另一个线程或进程中运行while循环,例如,使用flask-celery

可以使用setTimeout

实现javascript更新