首页 > 解决方案 > 保持mysql连接活跃

问题描述

我正在开发一个需要 mysql 的 python discord 机器人。问题是这个脚本应该长时间处于活动状态,而不是总是使用 mysql。当一段时间过去了,它尝试连接到数据库时,我无法连接,因为它在查询过程中失去了与服务器的连接,然后连接就消失了。我想确保它永远不会失去连接。我正在使用 mysql 连接器。我也无法访问 mysql 服务器本身。我只能访问数据库和表等,仅此而已。我已经尝试过一个在 3 分钟内运行 3 的线程,只是从中获取随机数据问题是当我启动线程时,机器人不响应任何不和谐的命令......代码:

def keep_mysql():
    while True:
        keepalive = "SELECT * FROM prefixes"
        mycursor.execute(keepalive)
        result = mycursor.fetchall()
        print("Keeping mysql connection alive")
        time.sleep(180)


@bot.event
async def on_ready():
    keepalive = threading.Thread(target=keep_mysql())
    keepalive.start()

标签: pythonmysqlpython-3.xdiscorddiscord.py

解决方案


使用无限运行的循环怎么样?我用这样的东西来不断检查时间。

import asyncio
from discord.ext.tasks import loop

@loop(count=None)
async def keep_sql():
    await client.wait_until_ready()
    keepalive = "SELECT * FROM prefixes"
    mycursor.execute(keepalive)
    result = mycursor.fetchall()
    print("Keeping mysql connection alive")
    asyncio.sleep(180)

@bot.event
async def on_ready():
    print("Bot is online")

keep_sql.start()
bot.run(token)

推荐阅读