#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. Никаких проблем, и все должно быть в порядке.