2
세션 시간 제한이 발생할 때마다 어떻게 작업을 트리거 할 수 있는지 궁금합니다. 세션 데이터가 파괴되기 전에 실행될 콜백 함수를 설정하는 방법이 있습니까? 인증되지 않은 사용자에게도 적합한 솔루션이 필요합니다.Django에서 세션 시간 초과에 대한 작업을 트리거하는 방법
세션 시간 제한이 발생할 때마다 어떻게 작업을 트리거 할 수 있는지 궁금합니다. 세션 데이터가 파괴되기 전에 실행될 콜백 함수를 설정하는 방법이 있습니까? 인증되지 않은 사용자에게도 적합한 솔루션이 필요합니다.Django에서 세션 시간 초과에 대한 작업을 트리거하는 방법
기본 세션 데이터베이스 백엔드를 사용하고 있다고 가정하면, 다음과 유사한 접근 방법 다음 세션은 DB에서 삭제 될 때 감지하는 장고 신호를 사용할 수 있습니다
Django - detect session start and end
참고 Django 1.5+에서 사용할 명령은 clearsessions이며 정리가 아닙니다.
자세한 내용은 clearing the session store의 공식 문서를 참조하십시오. cronjob를 구성 귀하의 경우에 적합하지 않은 경우
, 당신은 또한이 같은 수행하여, 귀하의 의견 중 하나의 세션 저장소를 지울 수 있습니다 :
from django.core import management
management.call_command('clearsessions')
것은이를 내가 청소에 관심이 아니에요 'Session' 테이블을 수정하십시오. 문서에서 언급했듯이, 이것은 cron 작업으로 수행 할 수 있습니다. 내가 원하는 것은 세션's'이's.expire_date - timezone.now() <0'가되는 지점에 도달 할 때마다 활성화되는 ** trigger **를 갖는 것입니다. 슬프게도 내가 생각한 것보다 똑같은 것처럼 보이지 않으므로, Session.objects.filter (expire_data__lt = timezone.now())가 무언가를 반환하는지 2 분마다 확인하는 샐러리 태스크로 갈 것이라고 생각합니다. 데이터를 저장하고 마지막으로 '삭제'합니다. – Buddyshot
세션 모델에서 pre_delete 신호를 사용하면 명시 적 로그 아웃을 수행하는 사용자 (2 분을 기다리지 않고도)에게 즉시 조치 할 수 있습니다. cron 작업 (또는 Celery 작업 포함)을 사용하여 세션 저장소를 지우면 명시 적으로 로그 아웃하지 않은 (예 : 브라우저 닫기) 사용자에 대한 만료 된 세션 객체를 삭제할 수 있으며 pre_delete 신호를 다시 활성화 할 수 있습니다. – baxeico
나는 만료되었지만 사용자 로그 아웃에 의해 명시 적으로 삭제되지 않은 세션에 주목하고 싶습니다. 따라서 둘 다 (만료 된 세션을 필터링하고, 데이터를 처리하고 테이블을 정리하는) Celery 작업을 작성하는 것이 IMHO를 유지하는 것이 더 쉽습니다. 내가 요청하지 않으면'pre_delete'는 방아쇠를 당하지 않을 것입니다. – Buddyshot