python flask 定時器

boye169發表於2024-08-21

安裝

pip install flask
pip install flask_apscheduler -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn

  

使用

方法一:使用 Config 類配置時間規則

from flask import Flask
from flask_apscheduler import APScheduler

class Config(object):
    # 列表型別,如有需要可以定義多個job
    JOBS = [
        {
            'id': 'job_1',                # 一個標識
            'func': '__main__:job1',     # 指定執行的函式
            'args': (1, 2),              # 傳入函式的引數
            'trigger': 'interval',       # 指定 定時任務的型別
            'seconds': 5                # 執行的間隔時間
        }
    ]

    SCHEDULER_API_ENABLED = True

def job1(a, b):                          # 執行的定時任務的函式
    print(str(a) + ' ' + str(b))


if __name__ == '__main__':
    app = Flask(__name__)                 # 例項化flask
    app.config.from_object(Config())      # 為例項化的 flask 引入配置
    scheduler = APScheduler()                  # 例項化 APScheduler
    scheduler.init_app(app)                    # 把任務列表放入 flask
    scheduler.start()                          # 啟動任務列表
    app.debug = True
    app.run(host='0.0.0.0',port=8000)          # 啟動 flask

方法二:使用裝飾器

from flask import Flask
from flask_apscheduler import APScheduler


# 例項化 APScheduler
scheduler = APScheduler()

@scheduler.task('interval', id='job_1', args=(1,2),seconds=5)
def job1(a, b):  # 執行的定時任務的函式
    print(str(a) + ' ' + str(b))


if __name__ == '__main__':
    app = Flask(__name__)  # 例項化flask
    scheduler.start()  # 啟動任務列表
    app.debug=True
    app.run(host='0.0.0.0',port= 8000)  # 啟動 flask

方法三:透過呼叫 flask_apscheduler 的 api (推薦)

from flask import Flask
from apscheduler.schedulers.background import BackgroundScheduler

# 排程器在後臺執行緒中執行,不會阻塞當前執行緒
scheduler = BackgroundScheduler()

def job1(a, b):                          # 執行的定時任務的函式
    print(str(a) + ' ' + str(b))

    
scheduler.add_job(func=job1, args=("1","2"),id="job_1", trigger="interval", seconds=5, replace_existing=False)
'''
func:定時任務執行的函式名稱。
args:任務執行函式的位置引數,若無引數可不填
id:任務id,唯一標識,修改,刪除均以任務id作為標識
trigger:觸發器型別,引數可選:date、interval、cron
replace_existing:將任務持久化至資料庫中時,此引數必須新增,值為True。並且id值必須有。不然當程式重新啟動時,任務會被重複新增。
'''

if __name__ == '__main__':
    app = Flask(__name__)  # 例項化flask
    scheduler.start()  # 啟動任務列表
    app.debug=True
    app.run(host='0.0.0.0',port= 8000)  # 啟動 flask  

例項物件 scheduler 擁有增、刪、改、查等基本用法

新增任務:add_job()

編輯任務:modify_job()

刪除任務:remove_job(id)(刪除所有任務:remove_all_jobs())

查詢任務:get_job(id)(查詢所有任務:get_jobs())

暫停任務:pause_job(id)

恢復任務:resume_job(id)

執行任務:run_job(id)(立即執行,無視任務設定的時間規則)

  

轉:flask_apscheduler 定時任務框架 - 三隻松鼠 - 部落格園 (cnblogs.com)

  

  

相關文章