Ошибка с 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}")