Ошибка с garbage collector, python

The garbage collector is trying to clean up non-checked-in connection <AdaptedConnection <Connection(Thread-3, started daemon 19576)>>

Ошибка связана с сессией, вот код

работа с сессией

engine = create_async_engine(os.getenv('DB_LITE'), echo=True)

session_maker = async_sessionmaker(bind=engine, class_=AsyncSession, expire_on_commit=False)

async def create_session():
    async with session_maker() as session:
        return session

сама функция

@post_router.message(F.text)
async def post_delete():
    session= await create_session()
    for post in await orm_get_all_post(session):
        date_today = datetime.now()
        date_meet = post.date
        date_meet = datetime(2024, int(date_meet.split('.')[1]), int(date_meet.split('.')[0]))
        if (date_meet-date_today).days==-2:
            await orm_delete_post(session, post.product_name)

ее вызов

async def main():
    dp.startup.register(on_startup)
    dp.shutdown.register(on_shutdown)

    scheduler=AsyncIOScheduler(timezone='Europe/Moscow')
    scheduler.add_job(post_delete, trigger='interval', seconds=5)
    scheduler.start()

    dp.update.middleware(DataBaseSession(session_pool=session_maker))

    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())

asyncio.run(main())

проблема заключается в том, что это фоновая функция: если использовать kwargs, то она становится классом. Если кто знает, помогите пожалуйста !


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

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

Пробуйте...

@post_router.message(F.text)
async def post_delete():
    async with session_maker() as session:
        try:
            for post in await orm_get_all_post(session):
                date_today = datetime.now()
                date_meet = post.date
                date_meet = datetime(2024,
                                     int(date_meet.split('.')[1]),
                                     int(date_meet.split('.')[0])
                                     )
                if (date_meet - date_today).days == -2:
                    await orm_delete_post(session, post.product_name)
        except Exception as e:
            print(f"Ошибка: {e}")
→ Ссылка