使用過schedule, 覺得沒有apscheduler簡單實用
schedule要等前面一個任務執行完才能執行下一個任務;
如果使用多線程或者多進程, 下一次定時任務會開啓一個新的線程/進程,執行次數多了就會演變成災難;
apscheduler的簡單使用
# -*- coding: utf-8 -*-
import os
import time
from apscheduler.schedulers.background import BackgroundScheduler
def run_job(name):
log.info("啓動 {} job".format(name))
os.system('scrapy crawl {}'.format(name))
# 用多進程會內存溢出
# 'scrapy crawl {}'.format(name), 用scrapy自帶excute執行的會有信號問題
# 啓動python腳本
def start_python_work():
scheduler = BackgroundScheduler()
for i in ['job_a', 'job_b', 'job_c']:
scheduler.add_job(
run_job, 'interval', seconds=4, kwargs={"name": i}
)
scheduler.start()
while True:
time.sleep(1)
if __name__ == "__main__":
start_python_work()