Heroku를 자지 못하게 하는 것이 아니라 지정 시간에 두드리는 Tips 【Heroku/enebular】

Heroku에 배포 한 응용 프로그램은 30 분 액세스가 없으면 잠을 자면 유명합니다. 다만, 24시간 자지 않게 하면 무료 프레임이 곧 없어지지 않습니까?

잠들 수없는 운용은 무료 프레임의 1000 시간이 곧 없어져 버린다



조사하면 정기적으로 자신에게 HTTP 요청을 실시하여 자지 못하게 하는 등의 대처법을 찾을 수 있습니다.

단, Heroku는 무료 프레임의 운용이라면 월간 1000시간까지만 이용할 수 있다는 제한이 있습니다.

잠을 잘 수없는 운영의 경우 잠을 잘 수 없기 때문에

24시간 x 30일 = 720시간

그렇다면 하나의 응용 프로그램만으로 무료 프레임의 70 %를 사용합니다.

기본 잠들어두고 지정한 타이밍에 두드린다



물론, 24시간 가동이 전제의 어플리케이션에서는 이것은 엄격합니다만, 배치 처리나 정기적으로 발언하는 BOT, RPA 툴 등 상시 가동이 아니고 1일 중에 몇회 움직이면 좋다고 하는 사양의 어플리케이션이면 24 시간 가동을 시키지 않아도 좋을 것입니다.

Heroku Scheduler 사용



여기 뿐이라면 비교적 일반적입니다. Heroku Scheduler라는 Heroku 앱이 잠들어도 지정된 시간에 명령을 실행하는 도구입니다.

응용 프로그램 관리 화면의 Resouces > Add-ons에서 Heroku Scherduler를 추가합니다.



지정된 시간에 지정된 명령을 실행할 수 있기 때문에
curl https://アプリ名.herokuapp.com

등을 지정하여 정기적으로 요청을 보내는 것이 일반적입니다.

한 번의 HTTP 요청으로 시작하지 않는 경우가 있습니다.



이것은 Node-RED(enebular) 배포의 경우뿐일지도 모릅니다만, 1회의 HTTP 리퀘스트만이라고 어플리케이션이 일어날 뿐, 그 다음으로부터의 리퀘스트로 겨우 처리가 된다고 하는 사건이 있었습니다.

그래서 두 번 HTTP 요청을 보내려고합니다.

Sleep 처리와 두 번의 HTTP 요청



Heroku Scheduler에서 매일 지정 시간에 실행시키려고 하면, 최단 실시 시간 간격이 30분이 되어 있어, 단 2회 실행한 것만으로는 30분 경과해 버리고 또 자고 버립니다.



이것을 Sleep 처리를 사이에 두면서, HTTP 리퀘스트를 2회 실시하는 것으로 회피할 수 있었습니다.

다음은 12:30에 처리를 실행하고 싶은 예입니다.
  • STEP1. 12:00 실행
  • $ sleep 30 && curl https://hogehoge.herokuapp.com/ping
    

    첫 번째 요청 전에 sleep 30에서 30 초를 기다린 다음 HTTP 요청을 수행합니다.
  • STEP2. 12:30 실행
  • $ curl https://hogehoge.herokuapp.com/ping
    

    이것은 평소와 같습니다. STEP1의 실행이 12시 00분 30초경~이므로 STEP2의 실행시에 아슬아슬하게 30분은 지나지 않아, sleep하지 않습니다.

    이 sleep 처리 넣지 않아도 어쩌면 일어나는 처리로 시간이 걸려 STEP2까지의 사이가 30분 미만의 경우도 있다고 생각합니다만, 확실한 것으로 하기 위해서 sleep를 넣는 것이 안심이라고 생각 합니다.

    이런 식으로 실행하고 싶은 타이밍 30분 전에 한 번 HTTP 요청을 하고 일으켜 둡니다.

    덧붙여서, UTC가 되기 때문에 마이너스 9시간을 지정하면 일본 시간이 됩니다.
    일본 시간의 12:30에 실행하고 싶다면, 여기의 설정은 AM03:30군요.

    또한 실제로는 Node-RED로 이런 식으로 엔드포인트를 준비하고 있습니다.



    요약: 두 번의 요청으로 두드려



    정리하면 이런 느낌으로 2회의 리퀘스트를 내고, 1회째를 지연 실행시키는 것으로 2회째의 리퀘스트로 확실하게 처리가 행해집니다.



    1회의 리퀘스트에서는 일어나지 않는다(엄밀하게는 일어나는 것만으로 아무것도 해주지 않는다) 때문에, 2회의 리퀘스트로 두드려 일으킨다고 하는 느낌이군요.

    좋은 웹페이지 즐겨찾기