@shadrin_ss
Junior

Python как запустить цикл многопоточно API QIWI? и как реализовать перезапуск цикла?

Суть вот в чем имеется бот телеграм хочу реализовать проверку платежа.
1 Бот выдает счет
2 И запускает цикл по проверке
3 Если оплатил человек то все норм не ошибок ничего
4 Если отменил оплату цикл остановиться(долго думал как сделать xD)
Но после того как кто то не важно кто отменил цикл, любой юзер то бот просто перестает выдавать новый счет, выдает ошибку "OverridingEx", я ее стал ловить что бы не вылетало но суть проблемы осталась.

Кто может сказать как решить проблему.
Использую SimpleQIWI

Сам цикл:
P.S. Все что мог прокомментировал

try:
                    price = 1 #Цена товара
                    comment = api.bill(price) #Генерирует комментарий платежа и тут сообственна ошибка
                    keyboard = types.InlineKeyboardMarkup() #Клавиатура
                    keyboard.add(*[types.InlineKeyboardButton(text='Отмена', callback_data='Отмена_TEST')])  #Клавиатура
                    bot.send_message(x.message.chat.id, 'Вам выставлен счет:\n'
                                                      'Сумма к оплате: 1 RUB\n'
                                                      'QIWI кошелек: ' +str(qphone)+'\n'
                                                      'Комментарий платежа: \n<b>'+str(comment)+'</b>',reply_markup=keyboard, parse_mode="Html")
                    api.start() #Запускает проверку
                    coklend__asd = 2 #Переменная для отмены цикла
                    a = 1 #Переменная для цикла
                    while a <= 5: #Ну поняли
                        if api.check(comment): #Если найдет комментарий то пропустит
                            bot.send_message(x.message.chat.id, 'Платёж получен!', parse_mode="Html")
                            break
                        else:
                            time.sleep(5) #Спим
                            a += 1 #Добавляем в переменную
                            print(a) #Выводим 
                    api.stop()#Остановит проверку
            except OverridingEx: #Ловлю ошибку
                bot.send_message(x.message.chat.id, 'ERROR')


Вот сама ошибка:
P.S. даже не думайте отправлять читать меня документацию SimpleQIWI, она составляет 1 проект на github и ничего по этому не говорит.
C:\Users\saxar\AppData\Local\Programs\Python\Python37-32\python.exe D:/repos/untitled/MAIN.py
2019-02-04 10:25:27,678 (util.py:65 WorkerThread2) ERROR - TeleBot: "OverridingEx occurred, args=('Overriding bill!',)
Traceback (most recent call last):
  File "C:\Users\saxar\AppData\Local\Programs\Python\Python37-32\lib\site-packages\telebot\util.py", line 59, in run
    task(*args, **kwargs)
  File "D:/repos/untitled/MAIN.py", line 220, in inline
    comment = api.bill(price)
  File "C:\Users\saxar\AppData\Local\Programs\Python\Python37-32\lib\site-packages\SimpleQIWI\Session.py", line 106, in bill
    raise OverridingEx('Overriding bill!')
SimpleQIWI.Errors.OverridingEx: Overriding bill!
"
Traceback (most recent call last):
  File "D:/repos/untitled/MAIN.py", line 346, in <module>
    bot.polling(none_stop=True)
  File "C:\Users\saxar\AppData\Local\Programs\Python\Python37-32\lib\site-packages\telebot\__init__.py", line 389, in polling
    self.__threaded_polling(none_stop, interval, timeout)
  File "C:\Users\saxar\AppData\Local\Programs\Python\Python37-32\lib\site-packages\telebot\__init__.py", line 413, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\saxar\AppData\Local\Programs\Python\Python37-32\lib\site-packages\telebot\util.py", line 108, in raise_exceptions
    six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
  File "C:\Users\saxar\AppData\Local\Programs\Python\Python37-32\lib\site-packages\six.py", line 693, in reraise
    raise value
  File "C:\Users\saxar\AppData\Local\Programs\Python\Python37-32\lib\site-packages\telebot\util.py", line 59, in run
    task(*args, **kwargs)
  File "D:/repos/untitled/MAIN.py", line 220, in inline
    comment = api.bill(price)
  File "C:\Users\saxar\AppData\Local\Programs\Python\Python37-32\lib\site-packages\SimpleQIWI\Session.py", line 106, in bill
    raise OverridingEx('Overriding bill!')
SimpleQIWI.Errors.OverridingEx: Overriding bill!
  • Вопрос задан
  • 494 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Norkotik
Напиши функцию проверки, которая возвращает либо ок, либо ошибку. Запускай её в цикле, ограничив количество циклов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы