[DE] Scheduling

박경국·2022년 2월 21일
0

Data Engineering

목록 보기
15/16
post-thumbnail

스케쥴링을 사용하면 매우 편리하게 데이터를 수집할 수 있습니다. 일정한 간격에 따라 데이터를 수집하거나, 지정한 시간에 맞게 데이터를 수집할 수 있습니다. 오늘은 스케줄러 중 하나인 APScheduler에 대해 정리하도록 하겠습니다.

APScheduler 사용하기

interval로 스케줄링하기

from apscheduler.schedulers.blocking import BlockingScheduler

sched = BlockingScheduler({'apscheduler.timezone':'UTC'})

def job_function():
    print("Hello World")

sched.add_job(func = job_function, trigger='interval', hours=2)

sched.start()
  • BlockingScheduler({'apscheduler.timezone':'UTC'})UTC+0 시간을 기준으로 스케줄러를 실행합니다.
  • def job_function() : 수행할 작업을 정의합니다.
  • sched.add_job : 스케줄러가 수행할 작업을 정의합니다. 위의 job은 시간마다 job_function을 수행하도록 정의했습니다.
sched.add_job(job_function, 'interval', hours=2, start_date='2010-10-10 09:30:00', end_date='2014-06-15 11:00:00')
  • 위와 같이 job을 수행하는 날짜와 끝나는 날짜를 설정할 수 있습니다.

특정한 날짜로 스케줄링하기

만약 정확히 특정한 날짜에 스케줄러를 실행하고 싶다면 interval 대신에 run_date 인자를 사용합니다.


#job1
sched.add_job(my_job, 'date', run_date=date(2009, 11, 6), args=['text'])

#job2
sched.add_job(my_job, 'date', run_date='2009-11-06 16:30:05', args=['text'])

#job3
sched.add_job(my_job, args=['text'])
  • job1은 2009년 11월 6일에 실행됩니다.
  • job2처럼 구체적인 실행 시간까지 설정할 수 있습니다.
  • job3처럼 run_data 인자에 아무런 값을 넘기지 않는다면 작업이 즉시 실행됩니다.

0개의 댓글