저번 글에서 클라우드플레어 워커를 wrangler
로 배포하는 방법을 알아보았습니다. 이번에는 워커에 cron 스케줄러를 사용하는 방법에 대해 알아보겠습니다.
프로젝트 생성
먼저 워커 프로젝트를 생성합니다. 저번 글에서 생성한 프로젝트를 사용해도 되고 새로운 프로젝트를 생성해도 됩니다.
1 | npm create cloudflare@latest |
cron 스케줄러 추가
워커에 cron 스케줄러를 추가하려면 wrangler.toml
파일에 triggers
섹션을 추가하면 됩니다. crons
에 cron 표현식을 배열로 추가하면 됩니다.
1 | name = "cron-test" |
워커 코드 수정
워커 코드에서 cron 스케줄러를 사용하려면 scheduled
함수를 사용하면 됩니다.
1 | export default { |
cron 스케줄러를 테스트하려면 아래 명령어를 실행하면 됩니다.
1 | npx wrangler dev --test-scheduled |
테스트 환경에서는 자동
으로 cron
이 실행되지 않습니다. cron을 테스트하려면 아래 명령어를 실행하면 됩니다.
1 | curl "http://localhost:8787/__scheduled?cron=0+*+*+*+*" |
잘 실행이 됩니다.
1 | cron processed |
멀티 cron 스케줄러 추가
여러 cron 스케줄러를 추가하려면 crons
에 cron 표현식
을 배열
로 추가하면 됩니다.
1 | name = "cron-test" |
하지만 이렇게 배포하면 처음에 작성한 코드가 "0 * * * *"
과 "0 0 * * *"
이 실행될 때 모두 실행됩니다. 각 cron 스케줄러
에 따라 다른 로직
을 실행하려면 event.cron
을 사용하면 됩니다.
1 | export default { |
명령어
1 | curl "http://localhost:8787/__scheduled?cron=0+*+*+*+*" |
결과
1 | 0 * * * * cron processed |
배포
배포하려면 아래 명령어를 실행하면 됩니다.
1 | npx wrangler deploy |
Workers
메뉴에서 cron-test
워커를 선택하고 Setting > Triggers
메뉴에서 cron 스케줄러를 확인할 수 있습니다.
모든 cron 삭제
공식 문서에서는 cron 스케줄러를 삭제하려면 wrangler.toml
파일에서 crons
를 빈 배열로 수정하면 된다고 합니다. 하지만 제가 테스트해본 결과 정상적으로 삭제되지 않았습니다. 모든 cron을 삭제하려면 대시보드에서 직접 삭제
해야 합니다. (수정은 바로 반영됩니다.)
1 | [triggers] |
deploy
후 대시보드 반영 까지 최대 30분
이 소요될 수 있습니다.
Green Compute
여담으로 Workers
를 100% 재생에너지로 구동하는 Green Compute
를 사용할 수 있습니다. 단점으로는 100% 재생에너지로 구동되는 데이터센터가 한정되어 있어서 레이턴시가 발생할 수 있습니다.
결론
이번 글에서는 클라우드플레어 워커
에 cron 스케줄러
를 사용하는 방법에 대해 알아보았습니다. 다음 글에서는 워커
에 KV
나 R1
을 활용해서 복잡한 기능을 구현해 보겠습니다.