Раздор бот и многопоточность
В настоящее время я внедряю бот- диск, использующий библиотеку Rapptz, и столкнулся с проблемой многопоточности. Это, наверное, очень легко, я что-то упускаю наверняка!
Я опрашиваю список подергивающихся каналов, чтобы увидеть, работают ли они, и если один из них есть, я бы хотел, чтобы бот отправил сообщение по определенному каналу. Для этого я запускаю поток, который каждые X секунд опрашивает Twitch API, но не может заставить бота отправить сообщение. Я новичок в асинхронном программировании, так что это, вероятно, причина.
Вот упрощенный пример того, что я хотел бы сделать
class MyThread(Thread):
def __init__(self, client):
Thread.__init__(self)
self.client = client
def run(self):
while True:
self.client.send_message(channel, "Sending message every 10 seconds!")
time.sleep(10)
Дело в том, что я знаю, что send_message
Метод асинхронный, но:
Когда я ставлю
await
Ключевое слово передsend_message
звоните, мне нужно также определитьrun
метод в качестве сопрограммы. Когда я пытаюсь запустить его, я получаю сообщение.RuntimeWarning: coroutine MyThread.run was never awaited
Когда я не помещаю это, я не получаю ошибки, но сообщение все еще не отправлено.
Я думаю, что есть что-то связанное с циклом событий, но я полностью потерян. Когда я читаю статью об асинхронном программировании, это кажется довольно ясным, но мне не удается адаптировать ее к моей проблеме...
0 ответов
Функция должна начинаться с await, чтобы использовать async.