我相信Nginx是基于事件的,因此对于1个单独的工作者,它可以接受多个请求,比如100个请求/秒.这些请求将被传递给uwsgi进行处理,然后一旦完成,它将把结果推回到Nginx,Nginx会将结果推送给执行http请求的用户.
假设我只为我的uwsgi使用1个工作者(没有线程),uwsgi将逐个处理这100个请求吗?因此,它需要完成100个进程才能完成整个请求.
现在如果我计划使用长轮询来快速更新我的前端How does facebook, gmail send the real time notification?会发生什么
我相信它会强制uwsgi处理单个请求(这是长轮询过程)并暂停所有其他请求,从而导致整个系统崩溃.
我是否对uwsgi如何工作有误解,或者是否有任何其他解决方案来实施长轮询?
谢谢
解决方法:
您的分析是正确的,长轮询不适合多进程或多线程模式(在成本方面).每个进程/线程都可以管理单个请求.幸运的是,uWsgi支持数十种
如果你的应用程序可以适应这种模式(这不是一个无脑任务,所以不要希望猴子修补将是非阻塞/即兴/基于微线程的技术(如gevent或低级greenlet)你会赢的.
除此之外,如果您喜欢/容忍基于回调的编程并且您不需要uWsgi特定功能,我发现Tornado是解决该问题的绝佳解决方案.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。