diff --git a/api/events/event_handlers/update_provider_when_message_created.py b/api/events/event_handlers/update_provider_when_message_created.py index c64e842160..d3943f2eda 100644 --- a/api/events/event_handlers/update_provider_when_message_created.py +++ b/api/events/event_handlers/update_provider_when_message_created.py @@ -5,6 +5,7 @@ from typing import Any, Optional from pydantic import BaseModel from sqlalchemy import update +from sqlalchemy.orm import Session from configs import dify_config from core.app.entities.app_invoke_entities import AgentChatAppGenerateEntity, ChatAppGenerateEntity @@ -183,7 +184,7 @@ def _execute_provider_updates(updates_to_perform: list[_ProviderUpdateOperation] # Use SQLAlchemy's context manager for transaction management # This automatically handles commit/rollback - with db.session.begin(): + with Session(db.engine) as session: # Use a single transaction for all updates for update_operation in updates_to_perform: filters = update_operation.filters @@ -214,7 +215,7 @@ def _execute_provider_updates(updates_to_perform: list[_ProviderUpdateOperation] # Build and execute the update statement stmt = update(Provider).where(*where_conditions).values(**update_values) - result = db.session.execute(stmt) + result = session.execute(stmt) rows_affected = result.rowcount logger.debug(