首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当使用Comet(长轮询)时,uwsgi进程会被卡住吗?

当使用Comet(长轮询)时,uwsgi进程会被卡住吗?
EN

Stack Overflow用户
提问于 2013-08-20 16:41:53
回答 1查看 792关注 0票数 4

我相信nginx是基于事件的,所以对于一个单一的worker,它可以处理多个请求,比如100个请求/秒。然后,这些请求将被传递到uwsgi进行处理,一旦处理完成,它将把结果推回到nginx,nginx将把结果推送给发出http请求的用户。

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

我相信这将迫使uwsgi处理单个请求(这是长轮询过程),并挂起所有其他请求,从而导致整个系统崩溃。

我对uwsgi的工作原理有什么误解吗?或者有没有其他的解决方案来实现长轮询?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-08-20 19:09:51

您的分析是正确的,长轮询并不适合多进程或多线程模式(就成本而言)。每个进程/线程可以管理单个请求。幸运的是,uWSGI支持数十种基于非阻塞/事件/微线程的技术(如gevent或较低级别的greenlet),如果您的应用程序能够适应这种模式(这不是一个没有大脑的任务,所以不要希望修补程序就足够了),那么您将获胜。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18330643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档