python多任務啓動之調度器

使用過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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章