python time sleep

조회수 932회

time.sleep(7200)을 걸어놨는데

두시간 지난 후 그 아래 코드가 작동해야 되는데 작동이 안 되는 것 같습니다.

왜 그런걸 까요?

time.sleep(7200)을 제외하고 코드를 돌려보면 돌아가는데 아무래도 time.sleep(7200)이 문제인 것 같습니다.

time.sleep을 짧은 단위로 끊어주면 해결될까요?

1 답변

  • 무슨 일을 하려 하시기에 2시간이나 뜸을 들이고 계신지 봐야 할 듯합니다.

    • 단지 2시간 뒤에 일어나야 할 일을 예약 걸기 위해서라면, 보통은 대기열(queue) 개념을 도입해 처리합니다. DB든 Redis든 어딘가에 "야 이러이러한 작업을 몇월며칠 몇시에 실행해"라고 줄세우는 한편, 1분에 한번씩 실행되는 크론잡 같은 것이 수시로 그 대기열을 확인하고 처리하는 겁니다. (그리고 줄세우는 작업 자체는 어떤 sleep()도 필요 없이 곧바로 줄을 세우고 끝을 내죠.)
    • 파일 읽기/쓰기, DB 등의 외부 TCP 연결 통신 등 해당 파이썬 스크립트 런타임 바깥에 있는 리소스 처리를 2시간이나 지연시키고 계신 거라면 그건 문제가 있습니다. 그 2시간 사이에 아무 변화도 일어나지 말란 법이 없습니다. 예컨대 MySQL 서버는 기본적으로 활성화된 커넥션을 최대 8시간 기다려준 다음 별일 없으면 그 커넥션을 끊어버린다고 하는데, 운이 나쁘면, 질문자님이 사용 중인 MySQL의 그 설정값이 2시간 미만으로 돼 있을 수 있습니다.

    time.sleep() 자체는 이런 코드로 테스트해 보실 수 있을 겁니다. 확인해 보시겠어요?

    import datetime
    
    print("down")
    print(datetime.datetime.now())
    sleep(7200)
    print("up")
    print(datetime.datetime.now())
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)