瀏覽代碼

Fix incorrect exception handling in db query (#23582)

Signed-off-by: Yongtao Huang <yongtaoh2022@gmail.com>
tags/1.7.2
Yongtao Huang 2 月之前
父節點
當前提交
c8c591d73c
No account linked to committer's email address

+ 7
- 7
api/commands.py 查看文件

from flask import current_app from flask import current_app
from pydantic import TypeAdapter from pydantic import TypeAdapter
from sqlalchemy import select from sqlalchemy import select
from werkzeug.exceptions import NotFound
from sqlalchemy.exc import SQLAlchemyError


from configs import dify_config from configs import dify_config
from constants.languages import languages from constants.languages import languages
) )
if not apps: if not apps:
break break
except NotFound:
break
except SQLAlchemyError:
raise


page += 1 page += 1
for app in apps: for app in apps:
) )


datasets = db.paginate(select=stmt, page=page, per_page=50, max_per_page=50, error_out=False) datasets = db.paginate(select=stmt, page=page, per_page=50, max_per_page=50, error_out=False)
except NotFound:
break
except SQLAlchemyError:
raise


page += 1 page += 1
for dataset in datasets: for dataset in datasets:
.order_by(DatasetDocument.created_at.desc()) .order_by(DatasetDocument.created_at.desc())
) )
documents = db.paginate(select=stmt, page=page, per_page=50, max_per_page=50, error_out=False) documents = db.paginate(select=stmt, page=page, per_page=50, max_per_page=50, error_out=False)
except NotFound:
break
except SQLAlchemyError:
raise
if not documents: if not documents:
break break
for document in documents: for document in documents:

+ 3
- 3
api/schedule/clean_embedding_cache_task.py 查看文件



import click import click
from sqlalchemy import text from sqlalchemy import text
from werkzeug.exceptions import NotFound
from sqlalchemy.exc import SQLAlchemyError


import app import app
from configs import dify_config from configs import dify_config
.all() .all()
) )
embedding_ids = [embedding_id[0] for embedding_id in embedding_ids] embedding_ids = [embedding_id[0] for embedding_id in embedding_ids]
except NotFound:
break
except SQLAlchemyError:
raise
if embedding_ids: if embedding_ids:
for embedding_id in embedding_ids: for embedding_id in embedding_ids:
db.session.execute( db.session.execute(

+ 3
- 3
api/schedule/clean_messages.py 查看文件

import time import time


import click import click
from werkzeug.exceptions import NotFound
from sqlalchemy.exc import SQLAlchemyError


import app import app
from configs import dify_config from configs import dify_config
.all() .all()
) )


except NotFound:
break
except SQLAlchemyError:
raise
if not messages: if not messages:
break break
for message in messages: for message in messages:

+ 5
- 5
api/schedule/clean_unused_datasets_task.py 查看文件



import click import click
from sqlalchemy import func, select from sqlalchemy import func, select
from werkzeug.exceptions import NotFound
from sqlalchemy.exc import SQLAlchemyError


import app import app
from configs import dify_config from configs import dify_config


datasets = db.paginate(stmt, page=1, per_page=50) datasets = db.paginate(stmt, page=1, per_page=50)


except NotFound:
break
except SQLAlchemyError:
raise
if datasets.items is None or len(datasets.items) == 0: if datasets.items is None or len(datasets.items) == 0:
break break
for dataset in datasets: for dataset in datasets:
) )
datasets = db.paginate(stmt, page=1, per_page=50) datasets = db.paginate(stmt, page=1, per_page=50)


except NotFound:
break
except SQLAlchemyError:
raise
if datasets.items is None or len(datasets.items) == 0: if datasets.items is None or len(datasets.items) == 0:
break break
for dataset in datasets: for dataset in datasets:

+ 2
- 2
api/services/workflow_draft_variable_service.py 查看文件

def _reset_node_var_or_sys_var( def _reset_node_var_or_sys_var(
self, workflow: Workflow, variable: WorkflowDraftVariable self, workflow: Workflow, variable: WorkflowDraftVariable
) -> WorkflowDraftVariable | None: ) -> WorkflowDraftVariable | None:
# If a variable does not allow updating, it makes no sence to resetting it.
# If a variable does not allow updating, it makes no sense to reset it.
if not variable.editable: if not variable.editable:
return variable return variable
# No execution record for this variable, delete the variable instead. # No execution record for this variable, delete the variable instead.
"node_execution_id": stmt.excluded.node_execution_id, "node_execution_id": stmt.excluded.node_execution_id,
}, },
) )
elif _UpsertPolicy.IGNORE:
elif policy == _UpsertPolicy.IGNORE:
stmt = stmt.on_conflict_do_nothing(index_elements=WorkflowDraftVariable.unique_app_id_node_id_name()) stmt = stmt.on_conflict_do_nothing(index_elements=WorkflowDraftVariable.unique_app_id_node_id_name())
else: else:
raise Exception("Invalid value for update policy.") raise Exception("Invalid value for update policy.")

Loading…
取消
儲存