与TS3 ServerQuery的Telnet连接越来越慢

时间:2018-02-04 21:55:16

标签: python mysql telnet telnetlib teamspeak

我为TeamSpeak 3编写了一个运行在ServerQuery(一个telnet接口)上的机器人。 但是僵尸程序会在稍后和之后继续响应,在开始时它需要0.1秒,在1分钟之后,机器人需要大约10秒的时间来响应,并且使用命令会使它更快。

知道为什么吗?

因此,基本上telnet接口将数据从TS3服务器发送到我的python脚本,ts3模块接收并处理数据,然后脚本将决定操作将是什么。

我正在使用的模块MySQLdbts3https://github.com/benediktschmitt/py-ts3

我的源代码在这里:https://pastebin.com/cJuyB9ZH

另一个脚本只占用所有客户端并每隔5分钟将它们推送到一个数据库中,运行多天而没有任何问题。

我现在多次检查了代码,甚至在使用它们后立即删除了变量,但它仍然存在同样的问题。

我的猜测是,它会阻塞RAM,因此我多次查看代码,但无法找出原因或位置。

旁注:我知道我有时会在没有必要时调用commit(),但我不知道这是否会导致问题,但我不知道如何。

我的代码的短(呃)版本:

import ts3
import MySQLdb
# Some other imports like time and threading and such

## Connect to TS3
tsConn = ts3.query.TS3Connection(tsAddr, tsPort)
try:
    tsConn.login(client_login_name=tsUser, client_login_password=tsPass)
    tsConn.use(sid=tsSID, virtual=True)
    print(" ==>> CONNECTED TO TS3 SERVER: " + tsAddr)
except ts3.query.TS3QueryError as e:
    print("Login to TS Server failed! Aborting...")
    exit(1)

## Connect to mySQL
try:
    qConn = MySQLdb.connect(host=qHost, user=qUser, passwd=qPass, db=qDB)
    qServer = qConn.cursor()
    print(" ==>> CONNECTED TO mySQL SERVER: " + qHost)
except OperationalError:
    print("Cannot connect to mySQL Database! Aborting...")
    exit(1)

running = True
while running:
    tsConn.send_keepalive()
    qServer.execute("SELECT 1") # keepalive

    try:
        e = tsConn.wait_for_event(timeout=1)

    except TS3TimeoutError:
        pass

    else:
        try:
            # <some command processing here>
        except KeyError:
        try:
            if event[0]["reasonid"] == "0":
                tsConn.sendtextmessage(targetmode=1, target=event[0]["clid"], msg=greetingmsg.format(event[0]["client_nickname"]))
        except:
            pass

0 个答案:

没有答案