python – 使用Comet(长轮询)时uwsgi进程是否卡住?
发布时间:2020-12-20 13:36:46 所属栏目:Python 来源:网络整理
导读:我相信nginx是基于事件的,因此对于1个单独的工作者,它可以接受多个请求,比如100个请求/秒.这些请求将被传递给uwsgi进行处理,然后一旦完成,它将把结果推回到nginx,nginx会将结果推送给执行http请求的用户. 假设我只为我的uwsgi使用1个工作者(没有线程),uwsgi
我相信nginx是基于事件的,因此对于1个单独的工作者,它可以接受多个请求,比如100个请求/秒.这些请求将被传递给uwsgi进行处理,然后一旦完成,它将把结果推回到nginx,nginx会将结果推送给执行http请求的用户.
假设我只为我的uwsgi使用1个工作者(没有线程),uwsgi将逐个处理这100个请求吗?因此,它需要完成100个进程才能完成整个请求. 我相信它会强制uwsgi处理单个请求(这是长轮询过程)并暂停所有其他请求,从而导致整个系统崩溃. 我是否对uwsgi如何工作有误解,或者是否有任何其他解决方案来实施长轮询? 谢谢 解决方法
您的分析是正确的,长轮询不适合多进程或多线程模式(在成本方面).每个进程/线程都可以管理单个请求.幸运的是,uWSGI支持数十种
如果你的应用程序可以适应这种模式(这不是一个无脑任务,所以不要希望猴子修补将是非阻塞/即兴/基于微线程的技术(如gevent或低级greenlet)你会赢的. 除此之外,如果您喜欢/容忍基于回调的编程并且您不需要uWSGI特定功能,我发现Tornado是解决该问题的绝佳解决方案. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |