Поддерживайте активное соединение с mysql

#python #mysql #python-3.x #discord #discord.py

#python #mysql #python-3.x #Discord #discord.py

Вопрос:

Я работаю над ботом на Python discord, которому нужен mysql. Проблема в том, что этот скрипт должен быть активен длительное время и не всегда использовать mysql. По прошествии некоторого времени, когда он пытается подключиться к базе данных, я не могу подключиться, потому что он потерял соединение с сервером в середине запроса, а затем соединение пропало. Я хочу убедиться, что он никогда не потеряет соединение. Я использую mysql-connector. У меня также нет доступа к самому серверу mysql. Я могу получить доступ только к базе данных, таблицам и т.д., Не более того. Я уже пробовал поток, который запускает 3 за 3 минуты, просто извлекая из него случайные данные. Проблема в том, что когда я запускаю поток, бот не отвечает ни на одну команду в discord… Код:

 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()
  

Ответ №1:

Как насчет использования цикла, который выполняется бесконечно? Я использую что-то подобное для непрерывной проверки времени.

 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)
  

Комментарии:

1. Мило. Спасибо за помощь. Просто из любопытства, как вы думаете, 3 минуты — это подходящее время, чтобы убедиться, что оно никогда не отключится?

2. Никаких проблем, и все должно быть в порядке.