Python 扭曲

2024-09-28 17:04:48 发布

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

我使用这个TwistedPythonTCP套接字服务器已经有一段时间了,现在我开始真正了解它了。我的问题是,我有350+个客户(取决于日期和时间来决定),有时我会有很大的滞后。我的意思是说,有时候在一个“房间”(基本上是一个虚拟人物聊天,用户有库存、朋友、房子等)和任何数量的用户(通常是房间里有10个以上的用户)时,通常每分钟都会有2-5秒的“冻结”。我所说的冻结是指不发送数据包,也没有人能看到任何人移动他们的角色,说话,或其他任何东西。当它解冻后,就像所有的数据包一次发送,你就会看到每个人的信息和东西。在

我的套接字服务器基于此:https://github.com/jesstess/twisted-network-programming-essentials-examples/blob/master/Chapter11-Testing/chatserver.py

我想知道我能做些什么来防止滞后。我在考虑多线程,但是在上面的例子中,我该怎么做呢?几周前,我在网上遇到的客户最多的是451个,但我不认为这会很快发生。在

如果你对我的问题感到困惑-基本上,我要问的是如何让服务器更好地处理约350个客户机,并防止对一个房间内所有客户机的延迟/冻结。在

编辑:与该示例不同,我在底部添加了以下内容:

ServerCL = GameServer(sys.argv[1])
reactor.listenTCP(int(config.get('GameServer1_' + str(sys.argv[1]), 'port')), ServerCL)
reactor.listenTCP(int(config.get('GameServer2_' + str(sys.argv[1]), 'port')), ServerCL)
reactor.run()

Tags: 用户服务器configget客户机客户sys数据包
1条回答
网友
1楼 · 发布于 2024-09-28 17:04:48

这些“冻结”的发生可能有多种原因。很可能这不是Twisted本身的问题,而是应用程序中的某些东西,它需要2-5秒的时间,并阻止服务器执行任何其他操作。在

听起来你有一个大型的、复杂的应用程序,所以我建议你使用一个像^{}这样的工具来确定你的应用程序在哪里卡住了;这会让你知道你可以改变什么。在

相关问题 更多 >