Как запустить параллельный цикл в Python в момент работы aiogram?

Пытаюсь создать телеграм бота и подключить к нему платежи через Qiwi, но не могу понять, как запустить параллельно цикл, который будет дергать API Qiwi время от времени и проверять поступления. Написал небольшую функцию, но не понимаю как сделать так, чтобы она работала параллельно с aiogram.execute.start_polling. Код функции, которая дергает API Qiwi:

class MyQiwiWallet:
    wallet: pyqiwi.Wallet
    check_delay: int
    start_date: datetime.datetime

    def __init__(self, token, number, delay):
        self.wallet = pyqiwi.Wallet(token=token, number=number)
        self.check_delay = delay
        self.start_date = datetime.datetime.now()

    async def check_payments(self):
        await asyncio.sleep(self.check_delay)
        end_date = datetime.datetime.now()
        payments = self.wallet.history(operation='IN', start_date=self.start_date, end_date=end_date)
        payments = payments.get('transactions')
        for payment in payments:
            "Тут код по проверке и зачислении платежа"
        self.start_date = end_date
        return await self.check_payments()

Далее я пытаюсь вставить эту функцию либо через параметр on_start

async def on_startup(dispatcher):
    wallet = MyQiwiWallet(token, number, delay)
    await wallet.check_payments()

asyncio.executor.long_polling(dispatcher, on_startup=on_startup)

Либо добавить после через loop.run_until_complete(wallet.check_payments) но в итоге работает или цикл long_polling или check_payments.. Как реализовать это, чтобы работало одновременно два цикла?


Ответы (0 шт):