一般来说,我对 REST API 和 Web 开发比较陌生。我正在寻找客户端 GET 请求的选项,以增量/流式接收数据,直到所有数据都以某些标准发送:
- 必须是异步的(需要使用twisted/klein作为框架),这里仅以Flask作为参考。
- 需要渲染服务器端(next.js 在这里有 socket.io 选项和react -> 这是我使用的前端),我知道它是不相关的,但是有这样的阅读材料很好,所以我可以粘合/frankensteinize组件在一起。
从服务器(python)它必须从生成器对象中产生,对吗?让我感到困惑的是 websocket、长轮询和服务器发送事件之间的底层选项/怪癖,更不用说像高速公路、WAMP 和像 pushpin 和 crossbar.io 这样的服务的框架,我认为这对我的情况来说太过分了。
我之所以提到它们,是为了寻求最佳实践,以将它们与它们的多种实现方式一起使用(呸……)。没有足够的经验,有点不知所措。
在核心级别(http headers/protocols/curl),根据我的场景,需要在客户端和服务器上实际设置什么?长轮询听起来像解决方案吗?异步是个好主意吗?
参考阅读:
什么是长轮询、Websocket、服务器发送事件 (SSE) 和 Comet?
我对 HTTP Polling、Long Polling、HTTP Streaming 和 WebSockets 的理解
http://blog.fanout.io/2016/11/21/moving-from-polling-to-long-polling/
https://blog.al4.co.nz/2016/01/streaming-json-with-flask/
TL;DR:异步 python webserver 中长轮询实现的最佳实践。