gpt4 book ai didi

python - 使用 Comet(长轮询)时 uwsgi 进程是否卡住了?

转载 作者:太空宇宙 更新时间:2023-11-03 11:53:57 25 4
gpt4 key购买 nike

我相信 nginx 是基于事件的,所以只有 1 个工作人员就可以处理多个请求,比如说 100 个请求/秒。然后这些请求将传递给 uwsgi 进行处理,一旦完成,它将结果推送回 nginx,nginx 将结果推送给执行 http 请求的用户。

假设我只为我的 uwsgi 使用 1 个 worker(无线程),uwsgi 将一个一个地处理这 100 个请求,对吗?所以它需要执行 100 个进程才能完成整个请求。现在如果我计划使用长轮询在我的前端快速更新会发生什么 How does facebook, gmail send the real time notification?

我相信它会强制 uwsgi 处理单个请求(这是一个长轮询过程)并暂停所有其他请求,从而导致整个系统崩溃。

我是否对 uwsgi 的工作方式有任何误解,或者是否有其他解决方案来实现长轮询?

谢谢

最佳答案

你的分析是对的,long-polling 不太适合多进程或多线程模式(在成本方面)。每个进程/线程可以管理一个请求。幸运的是,uWSGI 支持几十个非阻塞/事件/基于微线程的技术(如 gevent 或较低级别的 greenlets),如果你的应用程序可以适应这种模式(这不是一个无需大脑的任务,所以不要希望猴子修补会是够了)你会赢。

除此之外,如果你喜欢/容忍基于回调的编程并且你不需要 uWSGI 特定的功能,我发现 Tornado 是解决该问题的一个很好的解决方案。

关于python - 使用 Comet(长轮询)时 uwsgi 进程是否卡住了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18330643/

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