javascript - 如何在我的网站上实现实时更新(使用 Flask)?

标签 javascript python

我正在使用 Flask,我想实时向用户显示他在他的网站上的访问次数。

目前,我认为一种方法是创建一个无限循环,它在每次迭代后都有一些延迟,并使 ajax 请求获得当前访问次数。

我也听说过 node.js,但是我认为运行另一个进程可能会使运行它的计算机变慢(我假设)?

如何在我的网站上实现实时更新?有没有办法用 Flask 做到这一点?

提前致谢!

最佳答案

嗯,有很多可能性:

1) 轮询 - 这正是您所描述的。不时发出 AJAX 请求的无限循环。易于实现,可以使用 Flask 轻松完成,但效率很低 - 消耗大量资源并且扩展非常糟糕 - 使其成为真正糟糕的选择(不惜一切代价避免它)。你要么用它杀死你的机器,要么通知周期(轮询间隔)必须很大,这将是一个糟糕的用户体验。

2) 长轮询 - 一种客户端发出 AJAX 请求但服务器仅在通知可用时才响应该请求的技术。客户端收到通知后立即发出新的请求。为此,您将需要一个自定义 Web 服务器——我怀疑它可以用 Flask 完成。比轮询好得多(许多真实网站都使用它)但效率可能更高。这就是为什么我们现在:

3) WebSockets - 真正的双向通信。每个客户端都与服务器保持一个开放的 TCP 连接,并且可以对传入的数据使用react。但同样:需要一个自定义服务器,而且只有最现代的浏览器才支持它。

4) 其他东西,如 Flash 或 Silverlight 或其他 HTTP 技巧(分块编码):与 3) 几乎相同。虽然更难维护。

如您所见,如果您想要比轮询更优雅(和高效)的东西,则需要认真准备。

至于流程:您不必担心。这与您使用多少进程无关,而是它们有多重。 1 个写得不好的进程很容易杀死你的机器,而 100 个写得好的进程可以顺利运行。因此,请确保它以不会卡住您的机器的方式编写(并且我向您保证,它可以完成到由并发用户数定义的某个点)。

至于语言:无论是 Node.js 还是任何其他语言(如 Python)都无关紧要。选择一个你感觉更好的。但是我知道有一种强烈的趋势是将 Node.js 用于此类项目,因此互联网上可能有更多合适的库。或者可能不是。 Python 有例如 Twisted和/或 Tornado专门为此(可能还有更多)。

关于javascript - 如何在我的网站上实现实时更新(使用 Flask)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847122/

相关文章:

javascript - 为什么表格数据没有被渲染?

javascript - Angular 为所有站点运行 jQuery 代码

python - 在 Cython 中包装 std::array 并将其暴露给内存 View

python - 如何连接两个数据框并在这样的特定列上对齐?

python - __init__() 获得意外的关键字参数 'conne'

python - Catboost 理解 - 分类值的转换

javascript - 如何在 javascript 测验中保留所选选项?

javascript - 如何将媒体查询与 javascript 结合起来?

python - 为什么这两个 python 函数返回不同的结果?

javascript - 根据 Action 添加一个js文件。曾德