python - 保持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()
解决方案
使用无限运行的循环怎么样?我用这样的东西来不断检查时间。
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)
推荐阅读
- css - CSS:将图像适合未知大小的父级
- javascript - 即使在所有类和 id 都正确之后,JavaScript Modal 也无法正常工作
- c - 使用 SOCK_DGRAM 时使用 bind() 的目的是什么?
- mysql - MYSQL ERROR 1111 (HY000) at line 1: Invalid use of group function. How can I fix this error?
- java - 使用较新的 Java 进行弹性搜索会占用更多的 RAM
- c# - 尝试使用 LINQ 创建字典时出现转换错误
- mysql - 从 R 更新 mysql 表时,x 必须是字符或 SQL
- python - 读取csv字符串的函数
- javascript - 页面加载后响应式语音不起作用,单击需要
- networking - 无法访问 wifi 路由器管理门户