Problème en bref:MySQLdb.connect()
fonctionne sur le thread principal, ne fonctionne pas dans les autres threads.Impossible de se connecter à MySQL dans un thread en python (très bien sur le thread principal)
J'ai une classe appelée Bot
avec certaines méthodes. quelque chose comme ceci:
class Bot():
def task1():
read_from_db()
# some other work
def task2():
read_from_db()
# some other work
et moi avons une classe de fil qui accepte un objet et un Bot
task_name
et commence la tâche sur l'objet bot.
class taskThread (threading.Thread):
def __init__(self, bot, task):
threading.Thread.__init__(self)
self.bot = bot
self.task = task
def run(self):
print "Starting " + self.task + " for " + self.bot.username
if self.task == "task1":
self.bot.task1()
elif self.task == "task2":
self.bot.task2()
print "Exiting " + self.task + " for " + self.bot.username
J'ai essayé tout en read_from_db()
mais il ne fonctionne pas dans un fil. il fonctionne très bien si je l'appelle bot.task1()
en fil mais si je crée un objet MyThread et lui dire de courir Task1 il arrête exactement sur MySQLdb.connect()
ligne sans erreur. ça s'arrête juste. J'ai cherché beaucoup mais je n'ai rien trouvé.
modifier: weirdly lorsque le code est arrêté juste avant la création d'une connexion à db, si j'appuyez sur Ctrl + c dans le terminal (où je courais le code) reprend le code et fonctionne comme prévu. Quelqu'un connaît-il un tel comportement?
merci, mais la première était une faute de frappe, il est pas comme ça dans le code réel. mais votre deuxième point était une bonne suggestion, merci –