在运行TwistedWeb服务器时,人们使用什么技术来使用多个处理器/核心?有推荐的方法吗?
我的基于twisted.web的Web服务在Amazon EC2实例上运行,该实例通常具有多个CPU核心(8,16),并且该服务所做的工作类型受益于额外的处理能力,所以我非常想使用那.
据我所知,可以在多个Twisted实例的前面使用haproxy,squid或配置为反向代理的Web服务器.实际上,我们目前正在使用这样的设置,nginx用作在同一主机上运行的几个上游twisted.web服务的反向代理,但每个服务在不同的端口上.
这工作正常,但我真正感兴趣的是,没有"前置"服务器的解决方案,但所有扭曲的进程以某种方式绑定到同一个套接字并接受请求.这样的事情甚至可能......还是我疯了?操作系统是Linux(CentOS).
谢谢.
安东.
例如,假设我有一个"智能"温度计,每隔N秒将当前温度广播为UDP数据报.
现在,我可以编写一个侦听这些消息并以图形方式显示它们的客户端,并且我可以让该客户端同时在多台计算机上运行.到目前为止没问题.
但是,当我尝试在同一台Windows计算机上运行客户端的两个实例时,我会遇到有关尝试" 绑定到已使用的端口 "的错误.
这是:-
如果A或B,有什么办法围绕它.
如果是C,那么我会发布一些代码..
在以下 IPC 选项列表中,可以执行多播(即 1 个发送方和多个接收方):
编辑
根据我的理解,命名管道可能是可能的(不确定)。
我在socket编程中做了一些实验(在unix环境中).我在想的是
这可能吗?
如果Worker是Server的子级,则此方案有效.
如果Server和Worker是独立的进程,这有用吗?如果是,有人可以给我一些想法吗?这种情况是否有可用的样本?
我无法想出确切的套接字api,但我记得有一个套接字选项可以演示端口独占/非独占.
如果它不是独占的,TCP如何知道它应该转发到特定目标端口的应用程序?
我有一个父它启动时,揭开序幕的是创建一个端口上侦听X.这之后TCP Server实例的一个线程,家长开始分叉关子进程(这做几件事情并退出).请注意,这些子进程从父级继承fds,因此最终会侦听端口X.
父程序有一个处理程序,用于处理端口X上的请求但子进程没有这样的处理程序(它是一个os.execv() - ed C++程序)
我知道子进程可以关闭所有fds,在这种情况下不会出现上述情况.端口X上的传入请求会发生什么?怎么处理?
这是我到目前为止观察到的内容...父节点中的tcp请求处理程序在收到请求时执行commands.getstatusoutput(..).大多数时候,它表现得像预期的那样(或者我预期的方式) - 执行上述命令没有任何错误......但偶尔我会得到
File "/home/y/lib/python2.7/commands.py", line 61, in getstatusoutput
sts = pipe.close()
IOError: [Errno 10] No child processes
Run Code Online (Sandbox Code Playgroud) Perl中是否有一种机制可以在两个独立的进程之间共享套接字 - 而不需要在Linux中进行分叉或线程化?
我会假设不,但这个答案让我相信它是可能的:https://stackoverflow.com/a/1139425/1170839
我想在一个进程上创建一个侦听套接字,并允许另一个进程接受/读/写它.