@daniil-orlovv
Junior Python-developer

Не обновляется поле в модели БД с помощью SQLAlchemy — session.add() — session.commit()?

async def checking_apps(engine, bot):
    print('Запущена функция проверки доступности приложений')
    Session = sessionmaker(bind=engine)
    session = Session()
    q = session.query(App)
    urls_apps = [app.url for app in q]
    ids_apps = [app.id for app in q]
    urls_ids = {key: value for key, value in zip(urls_apps, ids_apps)}

    for app in q:
        print(app.counter, app.title)
        async with aiohttp.ClientSession() as session_http:
            async with session_http.get(app.url) as resp:
                print(resp.status)
                if resp.status != 200:
                    if app.counter != 3:
                        app.counter += 1
                        session.add(app)

                    else:
                        ids_users = get_ids_users_from_db(session)
                        message = (f'Приложение {app.title} недоступно по ссылке')
                        for id_user in ids_users:
                            await bot.send_message(id_user, message)
                        app.counter = 0
                        session.add(app)
                else:
                    app.counter = 0
                    session.add(app)
    session.commit()


Не сбрасывается счетчик до 0 при выполнении определенных условий. До 3 повышается, а до нуля не сбрасывается. Перепробовал разные варианты.
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
@daniil-orlovv Автор вопроса
Junior Python-developer
Как выяснилось - всему виной исключение, на которое я не обращал внимания:
Traceback (most recent call last):
  File "C:\Users\Даниил\Desktop\TelegramBot(тестовое)\venv\lib\site-packages\apscheduler\executors\base_py3.py", line 30, in run_coroutine_job
    retval = await job.func(*job.args, **job.kwargs)
  File "C:\Users\Даниил\Desktop\TelegramBot(тестовое)\monitoring.py", line 31, in checking_apps
    await bot.send_message(id_user, message)
  File "C:\Users\Даниил\Desktop\TelegramBot(тестовое)\venv\lib\site-packages\aiogram\client\bot.py", line 2823, in send_message
    return await self(call, request_timeout=request_timeout)
  File "C:\Users\Даниил\Desktop\TelegramBot(тестовое)\venv\lib\site-packages\aiogram\client\bot.py", line 492, in __call__
    return await self.session(self, method, timeout=request_timeout)
  File "C:\Users\Даниил\Desktop\TelegramBot(тестовое)\venv\lib\site-packages\aiogram\client\session\base.py", line 254, in __call__
    return cast(TelegramType, await middleware(bot, method))
  File "C:\Users\Даниил\Desktop\TelegramBot(тестовое)\venv\lib\site-packages\aiogram\client\session\aiohttp.py", line 178, in make_request
    response = self.check_response(
  File "C:\Users\Даниил\Desktop\TelegramBot(тестовое)\venv\lib\site-packages\aiogram\client\session\base.py", line 128, in check_response
    raise TelegramForbiddenError(method=method, message=description)
aiogram.exceptions.TelegramForbiddenError: Telegram server says - Forbidden: bot was blocked by the user


Не знал, что блокировка бота пользователем может так влиять на работу бота...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы