我正在运行一个客户端,它对我的服务器进行远程调用,都是用twisted编写的。在服务器端运行的方法可能需要很长时间才能返回,并且它们主要在Python代码中占用CPU,因此线程在这里没有任何帮助。
我已经尝试了很多东西,但最终我认为我将运行多个扭曲服务器实例来分发任务。
所以我告诉我的服务器要监听几个套接字(假设我在serverFromString
上使用socket_1
为服务器1创建它们,在socket_2
上为服务器2创建它们)我在这些套接字上连接我的客户端时只需拨打connectUNIX
,socket_1
和socket_2
作为参数。
到目前为止,我设法创建了监听我想要的端口的服务器,但我不知道如何告诉我的客户端在套接字上分发callRemote。当我计算几个callRemote
时,似乎实际上只使用了一个服务器。我该怎么做?
P.S。 :我尝试使用multiprocessing
,但我在服务器端的方法充满了无法解决的对象,所以没有机会; spawnProcess
的API完全不符合我正在调用的代码。此外,我不愿意使用未记录的未维护项目,因此Ampoule
不是一个选项。
编辑:没有答案,所以我猜这个问题不够明确。基本上它归结为:我可以将'port'或'socket'参数传递给callRemote
,这样我就可以管理我正在运行远程调用的服务器吗?
基本上我有一个django / uwsgi客户端,我在其中调用reactor.connectUNIX(my_port)
。我将我的python代码中的所有调用重定向到threads.blockingCallFromThread(reactor, callRemote, args)
。远程调用转到my_port
,但我真的不知道参数的传递位置和方式。在服务器端,应用程序使用twisted.scripts._twistd_unix.UnixApplicationRunner
启动,服务器侦听my_port
我想在不同的地址上启动多个服务器,并让我的客户端在服务器之间调度远程调用。我不知道我是否清楚,我很乐意增加更多精确度。