[PYTHON] APScheduler - Python Advanced Python Scheduler
* 프레임워크 의존도가 없다
* 초단위(cron), 특정시간(at), 주기적인(interval) 작업수행 가능
* @sched.scheduled_job('cron', day_of_week='fri'.... 으로 선언하여 사용
* 설치
-> pip install apscheduler
* 예제
import logging
from apscheduler.schedulers.blocking import BlockingScheduler
sched = BlockingScheduler()
def todo_action():
# TODO ACTTION
print "TODO this !!"
# 금요일 9시 22분에 실행
@sched.scheduled_job('cron', day_of_week='fri', hour=9, minute=22)
def cron_job():
print "Start Scheduler !!"
# 10초에 한번씩 todo_action 을 실행
# id 는 스케쥴러 삭제를 위해 필요 -> 삭제 : sched.remove_job("todo_action_1")
sched.add_job(todo_action, "interval", seconds=10, id="todo_action_1")
logging.basicConfig()
# 스케쥴러 실행
sched.start()
* 예제 2 : Tornado 에 적용 시
# 스케줄러 정의, 생성
@sched.scheduled_job('cron', day_of_week='fri', hour=9, minute=22)
def scheduled_job():
sched.add_job(timed_job, "interval", seconds=1, id="timedJob")
def timed_job():
print "aa"
sched.remove_job("timedJob") # 스케줄러 삭제
def main():
tornado.options.parse_command_line()
logging.info("start!! http://localhost:%s" % options.port)
http_server = tornado.httpserver.HTTPServer(Application())
http_server.listen(options.port)
sched.start() # 1. 스케쥴러 실행
tornado.ioloop.IOLoop.instance().start() # 2. tornado 실행
if __name__ == "__main__":
main()