aiogram 3 on_startup

Есть функция:

async def reg_reading():
"""Опрос регистров ПР"""
await asyncio.sleep(3)
_logger.info('### Старт чтения регистров...')
client.connect()
res = client.read_holding_registers(16384, 1)
if not res.isError():
    variables.switches = list(convert_to_bin(res.registers[0], 11))
while True:
    try:
        res = client.read_holding_registers(16385, 2)
        if res.isError():
            _logger.info('### Ошибка чтения регистров')
        else:
            data = convert_to_bin(res.registers[0], 11)
            variables.feedback = convert_to_bin(res.registers[1], 10)
            check_values(data=data)
    except ConnectionException:
        _logger.info('### Нет соединения.')
    await asyncio.sleep(2)

и есть бот на aiogram:

async def on_startup():
asyncio.create_task(reg_reading())


async def main():
    # Логирование
    logging.basicConfig(level=logging.INFO)
    # База данных
    create_db()
    user_parser()
    # Бот, диспетчер, роутеры
    bot = Bot(token=TOKEN)
    dp = Dispatcher()
    dp.startup.register(on_startup)
    dp.include_router(verify_handler.router)
    dp.include_router(info_handler.router)
    dp.include_router(light_ctrl_handler.router)
    # Запуск
    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot)


if __name__ == '__main__':
    asyncio.run(main())

Так все работает, но Pycharm ругается, что в функции on_startup перед asyncio должно быть await. Но тогда перестает работать поллинг. И если сделать просто

async def on_startup():
    await reg_reading()

То поллинг тоже не запускается


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

Автор решения: Zailox

Pycharm не очень умный, просто у него встроенная функция предупреждать, если используется функция, связанная с asyncio, можешь просто отключить предупреждения.

  • Может повлиять "if __name.....", т.к. строенной в питон возможности запуска main нету, это аналог.
→ Ссылка