__init__.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # coding=utf-8
  2. """
  3. @project: maxkb
  4. @Author:虎
  5. @file: __init__.py
  6. @date:2023/11/10 10:43
  7. @desc:
  8. """
  9. from django.core.cache import cache
  10. from django.db.models import QuerySet
  11. from django.utils.translation import gettext as _
  12. from ..constants.cache_version import Cache_Version
  13. from ..db.sql_execute import update_execute
  14. from ..utils.lock import RedisLock
  15. update_document_status_sql = """
  16. UPDATE "public"."document"
  17. SET status ="replace"("replace"("replace"(status, '1', '3'), '0', '3'), '4', '3')
  18. WHERE status ~ '1|0|4' \
  19. """
  20. def run():
  21. from models_provider.models import Model, Status
  22. rlock = RedisLock()
  23. if rlock.try_lock('event_init', 30 * 30):
  24. try:
  25. # 修改Model状态为ERROR
  26. QuerySet(Model).filter(
  27. status=Status.DOWNLOAD
  28. ).update(
  29. status=Status.ERROR, meta={'message': _('The download process was interrupted, please try again')}
  30. )
  31. # 更新文档状态
  32. update_execute(update_document_status_sql, [])
  33. version, get_key = Cache_Version.SYSTEM.value
  34. cache.delete(get_key(key='rsa_key'), version=version)
  35. finally:
  36. rlock.un_lock('event_init')