1. 程式人生 > 其它 >APScheduler實現定時任務--第二波

APScheduler實現定時任務--第二波

redis持久化

https://www.cnblogs.com/zhufanyu/p/14011317.html

import time
## 配置redis模組
from apscheduler.jobstores.redis import RedisJobStore
## 配置執行緒
from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor
## 建立定時任務的包
from apscheduler.schedulers.background import BackgroundScheduler

def job():
    # requests.get("http://127.0.0.1:8000/api/checkrequest/")
    print("測試")

def job_b():

    # 暫停id為a的任務
    scheduler.pause_job(job_id = 'a')
    for i in range(4):
        print(i)
        time.sleep(1)
    # 恢復id為a的任務
    scheduler.resume_job(job_id = 'a')

if __name__ == "__main__":

    REDIS = {
        'host': '127.0.0.1',
        'port': '6379',
        'db': 0,
        'password': ''
    }

    jobstores = {
        'redis': RedisJobStore(**REDIS)
    }

    executors = {
        'default': ThreadPoolExecutor(10),  # 預設執行緒數
        'processpool': ProcessPoolExecutor(3)  # 預設程序
    }
    scheduler=BackgroundScheduler(jobstores=jobstores, executors=executors)
    scheduler.add_job(func=job, trigger='interval', jobstore='redis', seconds=1, id="a", coalesce=True, replace_existing=True,name="3333")
    scheduler.add_job(func=job_b, trigger='interval', jobstore='redis', seconds=10, id="2", coalesce=True,
                      replace_existing=True, name="4444")

    scheduler.start()
    # 檢視待執行的任務
    print(scheduler.get_jobs())

    time.sleep(30)