flask 通常使用 flask_apscheduler 框架設(shè)計定時任務(wù),flask_apscheduler 功能很全面,能按設(shè)定的時間規(guī)則執(zhí)行任務(wù),可以持久化到各類數(shù)據(jù)庫(mysql,redis,mongodb),實現(xiàn)對定時任務(wù)增、刪、改、查等操作。
安裝
pip3 install flask_apscheduler
1、調(diào)用方法
方法一:使用 Config 類配置時間規(guī)則
from flask import Flask
from flask_apscheduler import APScheduler
class Config(object):
# 列表類型,如有需要可以定義多個job
JOBS = [
{
'id': 'job_1', # 一個標(biāo)識
'func': '__main__:job1', # 指定運行的函數(shù)
'args': (1, 2), # 傳入函數(shù)的參數(shù)
'trigger': 'interval', # 指定 定時任務(wù)的類型
'seconds': 5 # 運行的間隔時間
}
]
SCHEDULER_API_ENABLED = True
def job1(a, b): # 運行的定時任務(wù)的函數(shù)
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) # 把任務(wù)列表放入 flask
scheduler.start() # 啟動任務(wù)列表
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): # 運行的定時任務(wù)的函數(shù)
print(str(a) + ' ' + str(b))
if __name__ == '__main__':
app = Flask(__name__) # 實例化flask
scheduler.start() # 啟動任務(wù)列表
app.debug=True
app.run(host='0.0.0.0',port= 8000) # 啟動 flask
方法三:通過調(diào)用 flask_apscheduler 的 api (推薦)文章來源:http://www.zghlxwxcb.cn/news/detail-811626.html
from flask import Flask
from apscheduler.schedulers.background import BackgroundScheduler
# 調(diào)度器在后臺線程中運行,不會阻塞當(dāng)前線程
scheduler = BackgroundScheduler()
def job1(a, b): # 運行的定時任務(wù)的函數(shù)
print(str(a) + ' ' + str(b))
scheduler.add_job(func=job1, args=("1","2"),id="job_1", trigger="interval", seconds=5, replace_existing=False)
'''
func:定時任務(wù)執(zhí)行的函數(shù)名稱。
args:任務(wù)執(zhí)行函數(shù)的位置參數(shù),若無參數(shù)可不填
id:任務(wù)id,唯一標(biāo)識,修改,刪除均以任務(wù)id作為標(biāo)識
trigger:觸發(fā)器類型,參數(shù)可選:date、interval、cron
replace_existing:將任務(wù)持久化至數(shù)據(jù)庫中時,此參數(shù)必須添加,值為True。并且id值必須有。不然當(dāng)程序重新啟動時,任務(wù)會被重復(fù)添加。
'''
if __name__ == '__main__':
app = Flask(__name__) # 實例化flask
scheduler.start() # 啟動任務(wù)列表
app.debug=True
app.run(host='0.0.0.0',port= 8000) # 啟動 flask
實例對象 scheduler 擁有增、刪、改、查等基本用法:文章來源地址http://www.zghlxwxcb.cn/news/detail-811626.html
新增任務(wù):add_job()
編輯任務(wù):modify_job()
刪除任務(wù):remove_job(id)(刪除所有任務(wù):remove_all_jobs())
查詢?nèi)蝿?wù):get_job(id)(查詢所有任務(wù):get_jobs())
暫停任務(wù):pause_job(id)
恢復(fù)任務(wù):resume_job(id)
運行任務(wù):run_job(id)(立即運行,無視任務(wù)設(shè)置的時間規(guī)則)
到了這里,關(guān)于flask python 設(shè)置定時任務(wù) flask 周期性執(zhí)行任務(wù)方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!