網站首頁 編程語言 正文
這段時間遇到一個需求是如果庫里面有沒有圖片的數據,則訪問我們的網站生成圖片數據并更新庫,要求每隔一段時間就要檢測。
該需求主要為兩個部分:一是python腳本執行;二是windows部署定時任務;
一、python腳本
1、運行腳本:判斷當前任務是否正在執行,因為使用的是谷歌瀏覽器,所以只用判斷谷歌進程是否正在執行
isRunning=False
for proc in psutil.process_iter(['pid', 'name']):
if proc.info['name'] == 'chrome.exe':
isRunning=True
2、執行中:根據日志信息取出最新一條數據的時間,然后與當前時間計算,判斷腳本是否長時間沒生成新的數據,若長時間未生成新的數據,則關閉谷歌瀏覽器進程,等待下次觸發。 這一步是為了防止其它用戶打開瀏覽器沒關閉,導致瀏覽器進程一直顯示執行中。
# 判斷是否超過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、未執行:則使用python的selenium庫打開谷歌瀏覽器
4、獲取數據:查詢當前庫中沒有圖片的數據,然后循環使用selenium庫去訪問改數據的網站詳情頁,模擬用戶點擊動作,保存圖片信息
5、日志記錄:如果超過限制時間未保存成功,則將記錄寫在日志文件中,若保存成功也將日志信息寫在文件中,第二步中就用到此處的信息。
fo = open("./img-log.txt", "a")
fo.write("\n" + "[" + str(datetime.datetime.now()) + "] 圖片執行完成")
fo.close()
6、錯誤報警:因為是自動化去跑,執行就不用關心,所以需要設置報警,當錯誤日志文件中達到一定條數時,通過企業微信,發送錯誤信息通知
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": "圖片保存失敗數大于100"
}
}),headers)
7、關閉:當整個循環執行結束后,需要關閉谷歌進程,防止狀態一直是執行中,關閉命令也就是第二步中的命令
二、windows部署定時任務
1、創建任務:進入控制面板-》系統和安全-》管理工具-》計劃任務-》創建任務
2、觸發器:因為我們要每隔一段時間就要檢測庫中數據,所以需要設置一下執行時間和重復任務間隔時間,保證任務每過一段時間就要執行
3、操作:這里需要選擇python地址、腳本地址、腳本執行位置
4、至此定時任務就部署完成,等到指定時間后,就會觸發python的腳本,每天定時的跑數據
原文鏈接:https://blog.csdn.net/qq_37604998/article/details/126307755
相關推薦
- 2022-06-06 elementUI基礎的引入和使用
- 2022-09-24 ASP.NET?MVC格式化日期_實用技巧
- 2022-07-18 Qt和Windows消息通信機制
- 2022-03-29 Python函數裝飾器的使用詳解_python
- 2022-12-11 Django切換數據庫和遷移數據詳解_python
- 2022-09-08 Go語言中循環Loop的用法介紹_Golang
- 2023-03-04 Golang設計模式之組合模式講解_Golang
- 2022-04-02 Python面向對象的程序設計詳情_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支