client_access_num_job.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. # coding=utf-8
  2. """
  3. @project: maxkb
  4. @Author:虎
  5. @file: client_access_num_job.py
  6. @date:2024/3/14 11:56
  7. @desc:
  8. """
  9. from django.db.models import QuerySet
  10. from application.models import ApplicationChatUserStats
  11. from common.job.scheduler import scheduler
  12. from common.utils.lock import lock, RedisLock
  13. from common.utils.logger import maxkb_logger
  14. def client_access_num_reset_job():
  15. client_access_num_reset_job_lock()
  16. @lock(lock_key="access_num_reset_execute", timeout=30)
  17. def client_access_num_reset_job_lock():
  18. from django.utils.translation import gettext_lazy as _
  19. maxkb_logger.info(_('start reset access_num'))
  20. QuerySet(ApplicationChatUserStats).update(intraday_access_num=0)
  21. maxkb_logger.info(_('end reset access_num'))
  22. def run():
  23. rlock = RedisLock()
  24. if rlock.try_lock('access_num_reset', 30 * 30):
  25. try:
  26. maxkb_logger.debug('get lock access_num_reset')
  27. access_num_reset = scheduler.get_job(job_id='access_num_reset')
  28. if access_num_reset is not None:
  29. access_num_reset.remove()
  30. scheduler.add_job(client_access_num_reset_job, 'cron', hour='0', minute='0', second='0',
  31. id='access_num_reset')
  32. finally:
  33. rlock.un_lock('access_num_reset')