我正在编写一个Python TCP / IP服务器,该服务器接受来自一个客户端的消息。收到消息后,我将解析TCP消息并根据其消息类型生成响应,并将生成的响应发送给客户端。
我的应用程序运行良好,直到您很快收到多条消息。我的服务器在处理消息时似乎正在阻止I / O。 例如,当我正在处理第三条消息时,服务器将永远不会接受第四条消息,因为我仍在处理第三条消息。因此,第四个消息在空间中丢失。
我当时正在考虑使用线程处理此问题。 Thread1
可以坐在那里,仅接受来自客户端的传入消息并将它们放入队列,而Thread2
将从Thread1
读取请求消息并生成响应以发送到客户。发送消息后,Thread2
将从Thread1
的队列中弹出消息。
这是解决此问题的直接方法吗?
编辑: 经过更多测试后,我意识到我一直在收到客户的消息;但是,如果客户端未收到响应消息,则会在5-10秒后超时。 我需要加快消息处理的速度,因为我的服务器认为一切都很好,因为它实际上接收到所有消息,并且不会像我以前想象的那样丢失任何消息。问题是客户不耐烦。 关于如何提高性能的任何技巧?每个请求的进程并行运行,因此工作被平均分配了吗?我看到的唯一问题是,在处理另一条消息时很少会出现一条消息。