이전에 Probot 관련 글을 올렸는데 GitHub과 연동하는 대부분 프로그램이 그렇듯이 GitHub에 커밋이 올라오거나 이슈가 등록되는 등 이벤트가 발생했을 때 이를 받아서 프로그램이 실행되게 된다. 하지만 프로그램을 작성하다 보면 이벤트가 없이 동작해야 하는 경우가 있다.
예를 들어 하루에 한 번씩 오픈된 이슈라 Pull Reqeust를 가져와야 한다거나 리뷰를 기다리고 있는 Pull Reqeust의 목록을 가져와서 슬랙에 알려줘야 한다거나 할 때는 GitHub의 이벤트가 없이도 원하는 때에 프로그램이 동작하도록 해야 한다.
Probot: Scheduler
Probot: Scheduler는 원하는 시간에 함수가 실행되도록 할 수 있는 Probot의 스케쥴러다.
const createScheduler = require('probot-scheduler')
module.exports = robot => {
const scheduler = createScheduler(robot, {
interval: 24 * 60 * 60 * 1000 // 1 day
})
robot.on('schedule.repository', (context) => {
// your logic here
});
}
index.js
에서 위처럼 스케쥴러를 사용할 수 있다. 스케쥴러의 간격은 createScheduler
에서 옵션으로 지정할 수 있고(위에서는 1시간마다 실행된다.) 이때 schedule.repository
이벤트가 발생하므로 콜벡에서 context
를 인자로 받아서 다른 이벤트처럼 사용할 수 있다.
createScheduler
옵션에는 다음 두 설정을 넣을 수 있다.
delay
:DISABLE_DELAY
를 설정하지 않으면 기본값은true
이다.false
이면 앱 시작시 바로 실행되고true
이면 0부터interval
간격 사이의 랜덤 값으로 지연시켜서 모든 앱의 스케쥴러가 동시에 실행되지 않도록 한다.interval
: 밀리초 단위의 스케쥴 시간이고 기본값은 1시간이다.
종종 들러서 좋은 글 많이 읽고 갑니다.
그런데 사이트 반응속도가 유독 오래 걸리는데 개선하실 생각은 없으신가요. 평균 응답시간이 어쩔땐 5초이상 걸리네요.
생각은 있는데 계속 못하고 있습니다. 올해내에는 개선해 보려고 합니다.