fix: Multi process startup document modification executed multiple times (#2581)

This commit is contained in:
shaohuzhang1 2025-03-17 17:00:51 +08:00 committed by GitHub
parent be31989ab9
commit 000a3970e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -12,15 +12,22 @@ from .listener_manage import *
from django.utils.translation import gettext as _
from ..db.sql_execute import update_execute
from common.lock.impl.file_lock import FileLock
lock = FileLock()
update_document_status_sql = """
UPDATE "public"."document"
SET status ="replace"("replace"("replace"(status, '1', '3'), '0', '3'), '4', '3')
WHERE status ~ '1|0|4'
"""
def run():
# QuerySet(Document).filter(status__in=[Status.embedding, Status.queue_up]).update(**{'status': Status.error})
QuerySet(Model).filter(status=setting.models.Status.DOWNLOAD).update(status=setting.models.Status.ERROR,
meta={'message': _('The download process was interrupted, please try again')})
update_execute(update_document_status_sql, [])
if lock.try_lock('event_init', 30 * 30):
try:
QuerySet(Model).filter(status=setting.models.Status.DOWNLOAD).update(status=setting.models.Status.ERROR,
meta={'message': _(
'The download process was interrupted, please try again')})
update_execute(update_document_status_sql, [])
finally:
lock.un_lock('event_init')