gpt4 book ai didi

python - Python(和 Flask)中的非消息队列/简单长轮询

转载 作者:IT老高 更新时间:2023-10-28 22:20:43 29 4
gpt4 key购买 nike

我正在寻找一种简单(即,不需要我设置单独的服务器来处理消息队列)的方法来对运行计算并生成图表的小型 Web 界面进行长轮询。这是我的网络界面需要做的:

  1. 用户在网络界面中请求图表/数据
  2. 服务器运行一些计算。
  3. 当服务器运行计算时,一个小容器会更新(可能通过 AJAX/jQuery)计算进度(类似于您在带有 print 的控制台中执行的操作(即 print 'calculating density function...' ))
  4. 计算完成并向用户显示图表。

由于计算都是在服务器端完成的,我不太确定如何轻松设置它。显然,我想设置一个 REST API 来处理轮询,这在 Flask 中很容易。但是,我不确定如何检索实际更新。为此目的,一个明显的,虽然复杂的解决方案是设置一个消息队列并进行一些长轮询。但是,我不确定这对于这么简单的事情是正确的方法。

这是我的问题:

  1. 有没有办法使用文件系统来做到这一点?性能不是一个大问题。 AJAX/jQuery 可以从文件中查找消息吗?将进度保存到某个 .json 文件?
  2. 腌制呢? (我对酸洗不太了解,但也许我可以酸洗一个消息字典,它可以被处理轮询的 API 读取)。
  3. 轮询是正确的方法吗?有没有更好或更常见的模式来处理这个问题?

我觉得我把事情复杂化了,因为我知道这种事情在网络上很常见。我经常看到一些事情正在发生,并且在进行某些计算(例如,在 Google Analytics 中)时,正在运行一个小的“loading.gif”图像。

感谢您的帮助!

最佳答案

我已经使用 Flask 和 jQuery 构建了几个类似的应用程序。根据那次经验,我会说你的计划很好。

  1. 不要使用文件系统。您会遇到 JavaScript 安全问题/保护。万一您找到合理的解决方法,您仍然没有任何可移植或可扩展的东西。相反,请使用小型本地 Web 服务框架,例如 Flask。

  2. 不要腌制。使用 JSON。它是 Web 应用程序和 REST 接口(interface)的语言。 jQuery 和那些用于绘制图表、图形等的漂亮的基于 jQuery 的插件将需要 JSON。它易于使用,可读性强,对于小型应用程序,没有理由去其他地方。

  3. 长轮询非常适合您想要完成的任务。纯基于 HTTP 的应用程序有一些限制。 WebSockets 和类似的套接字层,如 Socket.IO,“是 future ”。但是,根据我的经验,要找到服务器端实现的好的、简单的例子是很困难的。我仔细看了有很多示例希望您设置 Node.js、REDIS 和其他中间件。但是我们为什么要设置两三个独立的中间件服务器呢?这很可笑。因此,对 Flask 等简单的纯 Python Web 框架进行长时间轮询是 IMO 的必经之路。

代码不仅仅是一个片段,所以我没有在此处包含它,而是将一个简化示例放入 a Mercurial repository on bitbucket您可以自由查看、复制或克隆。分为三个部分:

  • serve.py 基于 Python/Flask 的服务器
  • templates/index.html 98% HTML,2% 模板文件,基于 Flask 的服务器将呈现为 HTML
  • static/lpoll.js一个基于jQuery的客户端

关于python - Python(和 Flask)中的非消息队列/简单长轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158121/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com