apache / mod_wsgi并部署在a后面的多个AWS EC2实例上
AWS ELB负载均衡器.客户端应用程序与服务器交互
使用 AJAX.他们还定期轮询服务器以检索通知
并更新他们的州.我们希望删除民意调查并更换
它使用“推”,使用网络套接字.
因为任意实例处理来自客户端的Web套接字请求
并抓住这些网络套接字,因为我们希望将数据推送到
可能不在提供源的同一实例上的客户端
对于推送数据,我们需要一种方法将数据路由到相应的
实例,然后从该实例到适当的客户端Web
插座.
我们意识到apache / mod_wsgi不适合使用web套接字和
计划用Nginx / gunicorn替换这些组件并使用
gevent-websocket工人.但是,如果有几个工作进程之一
接收来自客户端的请求以建立Web套接字,如果是
工人进程的生命周期由主炮兵控制
过程,目前尚不清楚其他工人是如何处理的,或者事实上
非gunicorn进程可以将数据发送到这些Web套接字.
具体情况是这样的:发出HTTP请求的用户是
定向到一个EC2实例(主机),所需的行为是数据
要发送给完全打开Web套接字的其他用户
不同的实例.人们可以很容易地想象出一个消息系统
可以向每个实例上运行的代理(例如rabbitmq)发送消息
包含要通过Web套接字发送到连接的客户端的数据
那个例子.但是这些消息的处理程序如何访问
网络套接字,是在gunicorn的工作过程中收到的?
高级python Web套接字对象创建了gevent-websocket和
提供给工人的不能被腌制(他们是实例
不支持酸洗的方法),因此无法轻易共享
通过工作流程进行一些长期运行的外部流程.
事实上,这个问题的根源归结为web套接字如何
它们由来自客户端的HTTP请求启动并由WSGI处理
服务器(如gunicorn)中的处理程序可由外部访问
流程?枪炮工人处理似乎不对,
旨在处理HTTP请求的将产生长时间运行
线程挂起到Web套接字并支持处理来自的消息
将消息发送到已经存在的Web套接字的其他进程
通过这些工作流程附加.
任何人都可以解释Web套接字和基于WSGI的HTTP请求
处理程序可能会在我描述的环境中相互影响?
谢谢.