網(wǎng)站首頁 編程語言 正文
這段時(shí)間遇到一個(gè)需求是如果庫里面有沒有圖片的數(shù)據(jù),則訪問我們的網(wǎng)站生成圖片數(shù)據(jù)并更新庫,要求每隔一段時(shí)間就要檢測。
該需求主要為兩個(gè)部分:一是python腳本執(zhí)行;二是windows部署定時(shí)任務(wù);
一、python腳本
1、運(yùn)行腳本:判斷當(dāng)前任務(wù)是否正在執(zhí)行,因?yàn)槭褂玫氖枪雀铻g覽器,所以只用判斷谷歌進(jìn)程是否正在執(zhí)行
isRunning=False
for proc in psutil.process_iter(['pid', 'name']):
if proc.info['name'] == 'chrome.exe':
isRunning=True
2、執(zhí)行中:根據(jù)日志信息取出最新一條數(shù)據(jù)的時(shí)間,然后與當(dāng)前時(shí)間計(jì)算,判斷腳本是否長時(shí)間沒生成新的數(shù)據(jù),若長時(shí)間未生成新的數(shù)據(jù),則關(guān)閉谷歌瀏覽器進(jìn)程,等待下次觸發(fā)。 這一步是為了防止其它用戶打開瀏覽器沒關(guān)閉,導(dǎo)致瀏覽器進(jìn)程一直顯示執(zhí)行中。
# 判斷是否超過60分鐘沒跑新的作品
isClear=False
if len(lines) == 0:
isClear=True
else:
interTime=int(time.time())-int(time.mktime(time.strptime(lines[-1][1:20], "%Y-%m-%d %H:%M:%S")))
if (interTime / 60)>60:
isClear=True
if isClear==True:
browserName = "chrome.exe"
cmd = "taskkill /f /t /im {}".format(browserName)
os.system(cmd)
3、未執(zhí)行:則使用python的selenium庫打開谷歌瀏覽器
4、獲取數(shù)據(jù):查詢當(dāng)前庫中沒有圖片的數(shù)據(jù),然后循環(huán)使用selenium庫去訪問改數(shù)據(jù)的網(wǎng)站詳情頁,模擬用戶點(diǎn)擊動作,保存圖片信息
5、日志記錄:如果超過限制時(shí)間未保存成功,則將記錄寫在日志文件中,若保存成功也將日志信息寫在文件中,第二步中就用到此處的信息。
fo = open("./img-log.txt", "a")
fo.write("\n" + "[" + str(datetime.datetime.now()) + "] 圖片執(zhí)行完成")
fo.close()
6、錯(cuò)誤報(bào)警:因?yàn)槭亲詣踊ヅ埽瑘?zhí)行就不用關(guān)心,所以需要設(shè)置報(bào)警,當(dāng)錯(cuò)誤日志文件中達(dá)到一定條數(shù)時(shí),通過企業(yè)微信,發(fā)送錯(cuò)誤信息通知
headers = {"Content-type": "application/json"}
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key="
r = requests.post(url,json.dumps({
"msgtype": "text",
"text":
{
"content": "圖片保存失敗數(shù)大于100"
}
}),headers)
7、關(guān)閉:當(dāng)整個(gè)循環(huán)執(zhí)行結(jié)束后,需要關(guān)閉谷歌進(jìn)程,防止?fàn)顟B(tài)一直是執(zhí)行中,關(guān)閉命令也就是第二步中的命令
二、windows部署定時(shí)任務(wù)
1、創(chuàng)建任務(wù):進(jìn)入控制面板-》系統(tǒng)和安全-》管理工具-》計(jì)劃任務(wù)-》創(chuàng)建任務(wù)
2、觸發(fā)器:因?yàn)槲覀円扛粢欢螘r(shí)間就要檢測庫中數(shù)據(jù),所以需要設(shè)置一下執(zhí)行時(shí)間和重復(fù)任務(wù)間隔時(shí)間,保證任務(wù)每過一段時(shí)間就要執(zhí)行
3、操作:這里需要選擇python地址、腳本地址、腳本執(zhí)行位置
4、至此定時(shí)任務(wù)就部署完成,等到指定時(shí)間后,就會觸發(fā)python的腳本,每天定時(shí)的跑數(shù)據(jù)
原文鏈接:https://blog.csdn.net/qq_37604998/article/details/126307755
相關(guān)推薦
- 2023-05-14 Go結(jié)構(gòu)體的基本使用詳解_Golang
- 2022-02-20 Unity3D實(shí)現(xiàn)經(jīng)典小游戲Pacman_C 語言
- 2022-07-14 Android自定義相機(jī)、預(yù)覽區(qū)域裁剪_Android
- 2022-04-12 React工作流程及Error?Boundaries實(shí)現(xiàn)過程講解_React
- 2022-11-16 從Context到go設(shè)計(jì)理念輕松上手教程_Golang
- 2022-11-21 Qt實(shí)現(xiàn)小功能之圓形進(jìn)度條的方法詳解_C 語言
- 2022-06-06 webpack5.6.0解決報(bào)The ‘mode‘ option has not been set,
- 2022-10-07 Android?線程優(yōu)化知識點(diǎn)學(xué)習(xí)_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支