我需要在Python中编写一个类似于程序的代理,工作流程与Web代理非常相似。该程序位于客户端和服务器之间,包含客户端发送给服务器的请求,处理该请求,然后将其发送到原始服务器。当然,使用的协议是使用TCP的私有协议。混合Python与多处理扭曲?
为了尽量减少工作量,我想使用Python Twisted来处理请求接收(该部分充当服务器)和重新发送(该部分充当客户端)。为了获得最大的性能,我想使用python multiprocessing(线程具有GIL限制)将程序分成三个部分(进程)。第一个进程运行Twisted接收请求,将请求放入队列中,并立即返回成功到原始客户端。第二个进程从队列中获取请求,进一步处理请求并将其放入另一个队列。第三个进程从第二个队列获取请求并将其发送到原始服务器。
我是Python的新角色Twisted,我知道它是事件驱动的,我也听说最好不要将Twisted与线程或多处理混合在一起。所以我不知道这种方式是否合适,或者是否有更简单的方法,只需使用Twisted?
我怀疑使用3个进程,而不是1是多余的。第一个和最后一个进程不会执行任何CPU绑定处理......它们只是IO绑定。通过实际将所有内容放入一个没有线程和只有异步/事件库逻辑的Twisted reactor进程中,您可能会获得更好的可维护性和更好的执行结果。 – 2012-03-22 13:43:10