2014-11-26 4 views

답변

0

기본 세션 데이터베이스 백엔드를 사용하고 있다고 가정하면, 다음과 유사한 접근 방법 다음 세션은 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') 
+0

것은이를 내가 청소에 관심이 아니에요 'Session' 테이블을 수정하십시오. 문서에서 언급했듯이, 이것은 cron 작업으로 수행 할 수 있습니다. 내가 원하는 것은 세션's'이's.expire_date - timezone.now() <0'가되는 지점에 도달 할 때마다 활성화되는 ** trigger **를 갖는 것입니다. 슬프게도 내가 생각한 것보다 똑같은 것처럼 보이지 않으므로, Session.objects.filter (expire_data__lt = timezone.now())가 무언가를 반환하는지 2 분마다 확인하는 샐러리 태스크로 갈 것이라고 생각합니다. 데이터를 저장하고 마지막으로 '삭제'합니다. – Buddyshot

+0

세션 모델에서 pre_delete 신호를 사용하면 명시 적 로그 아웃을 수행하는 사용자 (2 분을 기다리지 않고도)에게 즉시 조치 할 수 있습니다. cron 작업 (또는 Celery 작업 포함)을 사용하여 세션 저장소를 지우면 명시 적으로 로그 아웃하지 않은 (예 : 브라우저 닫기) 사용자에 대한 만료 된 세션 객체를 삭제할 수 있으며 pre_delete 신호를 다시 활성화 할 수 있습니다. – baxeico

+0

나는 만료되었지만 사용자 로그 아웃에 의해 명시 적으로 삭제되지 않은 세션에 주목하고 싶습니다. 따라서 둘 다 (만료 된 세션을 필터링하고, 데이터를 처리하고 테이블을 정리하는) Celery 작업을 작성하는 것이 IMHO를 유지하는 것이 더 쉽습니다. 내가 요청하지 않으면'pre_delete'는 방아쇠를 당하지 않을 것입니다. – Buddyshot

관련 문제