Twisted跨服务器分发callRemote

2024-10-01 02:26:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在运行一个客户端,它对我的服务器进行远程调用,都是用twisted编写的。在服务器端运行的方法返回的时间可能很长,而且它们主要消耗Python代码中的CPU,因此线程在这里没有任何帮助

我尝试了很多东西,但最终我想我会运行几个twisted服务器实例来分发任务

因此,我告诉我的服务器在几个套接字上侦听(假设我在服务器1上使用serverFromStringsocket_1上创建它们,在服务器2上使用socket_2创建它们),并且我在这些套接字上连接我的客户机,用socket_1socket_2作为参数调用connectUNIX

到目前为止,我成功地创建了监听我想要的端口的服务器,但是我不知道如何告诉我的客户机在套接字之间分发callRemote。当我计算几个callRemote时,似乎只有一个服务器在实际使用。我该怎么做

注意:我试过使用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

我想在不同的地址上启动几个服务器,让我的客户机在服务器之间调度远程调用。我不知道我是否还很清楚,我很乐意增加更多的精确性


Tags: 方法代码服务器客户端参数客户机远程port