前言
??好久沒更新過博客了庞瘸,最近在忙一些學(xué)習(xí)上的事捧弃,這幾天總有一個(gè)想法,老早之前寫過的一些Python腳本都是一次性或是只能通過接口間接執(zhí)行的擦囊。我會(huì)在想违霞,如果當(dāng)時(shí)我剛好不能上網(wǎng),但是我想執(zhí)行我的腳本瞬场,這可怎么辦买鸽?接口名也那么長(zhǎng),我總不能直接記住吧贯被!我的大腦容量也不夠把畚濉妆艘!把它們都記在手機(jī)上?不太現(xiàn)實(shí)看幼!我寫的大都是解析網(wǎng)頁的腳本批旺,總不能一直通過接口訪問吧?這時(shí)诵姜,定時(shí)任務(wù)就是個(gè)好的幫手汽煮!
開搞
1.裝python解析器都會(huì)吧!
2.重點(diǎn)是flask_apscheduler
這個(gè)庫茅诱,這個(gè)庫就是用來進(jìn)行定時(shí)任務(wù)的逗物,不管你是通過cmd
還是pycharm裝都行
pycharm 提取碼: 6sx4
注:這個(gè)pycharm是免安裝的,直接解壓就能用瑟俭,并且還是漢化過的翎卓,請(qǐng)各位帶哥自行取用,,用的時(shí)候只要指定自己的解析器就行
3.使用它
3.1必須先引入
from flask import Flask # 用來進(jìn)行web接口的編寫和啟動(dòng)
from flask_apscheduler import APScheduler # 定時(shí)任務(wù)的庫
3.2指明要啟動(dòng)的方法名摆寄,并注冊(cè)定時(shí)任務(wù)
app = Flask(__name__)
scheduler = APScheduler() # 注冊(cè)定時(shí)任務(wù)
3.3在啟動(dòng)方法中使用
if __name__ == "__main__":
scheduler.init_app(app) # 初始化
scheduler.add_job(func=job, trigger='interval', seconds=2, id='job_id', kwargs={"i": "job_id"})
#各參數(shù)說明:方法名 觸發(fā)器 時(shí)間間隔 標(biāo)識(shí)id 方法需要的參數(shù)
#APScheduler提供了三種任務(wù)觸發(fā)器:
#data:固定日期觸發(fā)器:任務(wù)只運(yùn)行一次失暴,運(yùn)行完畢自動(dòng)清除;若錯(cuò)過指定運(yùn)行時(shí)間微饥,任務(wù)不會(huì)被創(chuàng)建
#interval:時(shí)間間隔觸發(fā)器
#cron:cron風(fēng)格的任務(wù)觸發(fā)
scheduler.start() # 開啟
app.run(host='0.0.0.0', port="8080") # web接口的地址和端口
3.4寫方法
def job(i):
print(str(i))
l = test()
print(l)
if len(l) > 20:
scheduler.remove_job(id="job_id")
arr1 = [] # 這個(gè)全局?jǐn)?shù)組是用來返回?cái)?shù)據(jù)從而提供定時(shí)任務(wù)停止的條件
def test():
for i in range(5):
if i % 2 == 0:
arr1.append(i)
return arr1
3.5結(jié)果如下
全部代碼如下:
from flask import Flask
from flask_apscheduler import APScheduler
import datetime, os
app = Flask(__name__)
scheduler = APScheduler()
def write_log(buf):
print(buf)
with open('test.txt', 'a') as f:
f.write(buf + "\n")
@app.route("/test", methods=['GET', 'POST'])
def index():
return "hello world"
def job(i):
print(str(i))
l = test()
print(l)
write_log(str(l) + " " + str(datetime.datetime.now()))
if len(l) > 20:
scheduler.remove_job(id="job_id")
arr1 = []
def test():
for i in range(5):
if i % 2 == 0:
arr1.append(i)
return arr1
if __name__ == "__main__":
scheduler.init_app(app)
scheduler.add_job(func=job, trigger='interval', seconds=2, id='job_id', kwargs={"i": "job_id"})
# 各參數(shù)說明:方法名 觸發(fā)器 時(shí)間間隔 標(biāo)識(shí)id 方法需要的參數(shù)
# APScheduler提供了三種任務(wù)觸發(fā)器:
# data:固定日期觸發(fā)器:任務(wù)只運(yùn)行一次逗扒,運(yùn)行完畢自動(dòng)清除;若錯(cuò)過指定運(yùn)行時(shí)間欠橘,任務(wù)不會(huì)被創(chuàng)建
# interval:時(shí)間間隔觸發(fā)器
# cron:cron風(fēng)格的任務(wù)觸發(fā)
scheduler.start()
app.run(host='0.0.0.0', port="8080")