展开讨论

创业与收入经验摘录 · 机器翻译

我不得不花时间理解的一件事是整个异步服务器式的编程方式

我必须理解的一件事是整个异步服务器编程风格。我了解到在服务器上执行睡眠操作实际上几乎不消耗资源。线程进入睡眠状态,并在计时器到期时唤醒。在此期间,服务器可以不受阻碍地处理其他请求。你可以同时拥有数百个或数千个这样的线程——处理请求、等待IO等。这与同步服务器不同,例如Python世界中的Flask配合Gunicorn,那里有少量预先分叉的服务器进程。在这种情况下,如果其中一个进程在睡眠,而无法处理其他请求,那会是一种浪费,我同意这一点。但最终,能够从后端异步控制客户端还是很酷的,当后端发生某些事情时,可以更新信号(可以将其视为一种具有超能力的前端变量),或者更新客户端的DOM,或者运行脚本。

源讨论Htmx – The Fetch()ening原帖 153 条评论 · 导入时统计
2

这条内容在回应什么?

父级讨论 · 节选

NP

Datastar看起来很有趣,但他们的关于如何重定向用户的方法简直是个笑话。 async def redirect_from_backend(): yield SSE.patch_elements('<div id="indicator">正在重定向,3秒后...</div>') await asyncio.sleep(3) yield SSE.execute_script('window.location = "/guide"') 哈哈,他们真的以为这样使用服务器资源是合理的吗。 [1] https://data-star.dev/how_tos/redirect_the_page_from_the_bac...

完整原文

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 2

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

NP

某种程度上是这样,但在服务器上睡眠然后再重定向是疯狂的。当客户端完全可以自己管理自己的计时器时,这样做毫无意义且脆弱。 这种做法完全破坏了对客户端责任的合理理解。接下来,难道要发送每个按键到服务器,让服务器告诉客户端去更新文本输入框吗? 保持SSE连接仍然需要资源,比如内存、开放的套接字等。此外,还需要负载均衡、重新建立断开的连接等。但最糟糕的是,完全没有好处地将基本逻辑重新放回服务器端。

完整原文
NA

在服务器上睡眠仍然会消耗资源,比如内存、开放的套接字等,这可能会因为例如垃圾回收成本、调度成本等导致不必要的CPU使用。

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。