Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Twisted中提高事件处理速度?_Python_Multithreading_Twisted - Fatal编程技术网

Python 在Twisted中提高事件处理速度?

Python 在Twisted中提高事件处理速度?,python,multithreading,twisted,Python,Multithreading,Twisted,我有一个python Twisted SSLServer,它通过100个不同外部客户端的100个持久连接来接受SSL编码的消息。每个客户端都通过自己的SSLClient反应器发送消息。每个客户机每秒通过其到服务器的持久套接字连接推送大约20条小消息。问题是,一些客户端遇到这样的情况:它发送的消息之一直到5-10分钟后才被服务器接收和处理 消息以交错的方式从客户端发送,即不是每分钟0秒发送,而是在该分钟内随机分布。此外,当客户机从LoopingCall内部发送这些方法时,它确实会将send mes

我有一个python Twisted SSLServer,它通过100个不同外部客户端的100个持久连接来接受SSL编码的消息。每个客户端都通过自己的SSLClient反应器发送消息。每个客户机每秒通过其到服务器的持久套接字连接推送大约20条小消息。问题是,一些客户端遇到这样的情况:它发送的消息之一直到5-10分钟后才被服务器接收和处理

消息以交错的方式从客户端发送,即不是每分钟0秒发送,而是在该分钟内随机分布。此外,当客户机从LoopingCall内部发送这些方法时,它确实会将send message sendLine方法包装在callFromThread内部,以便它们从客户机的反应器线程发送

我对Twisted的理解是,它接受接收到的每条消息并将其放入队列中,先到先得,然后按顺序处理每条消息。从我们的日志文件来看,服务器上的任何消息处理程序似乎都没有阻塞或占用太多时间,但它们似乎有很多

所以我的问题是,有没有办法让Twisted在给定的时间内处理更多的事件?要增加线程池大小吗?还有其他想法吗


我们的机器是相当强大的双处理器Xeon,每个都有4个内核和32GB的RAM,所以我很惊讶我们看到了这个问题。我猜我们的Twisted服务器设置有点不对劲。

您确定消息处理程序接收消息的延迟吗?例如,您是否已将处理程序设置为,例如,在收到新消息时写入日志?是的,我们已经这样做了。我们已经向服务器上的每个事件处理程序添加了计时日志消息,所以它会打印出每个处理程序的开始和结束时间。正如我所说,看起来任何处理程序都不会花费很长时间,只是有很多消息需要处理。