專案需要程式能夠放在超算中心定時執行,於是針對scrapy寫了乙個定時爬蟲的程式main.py
,直接放在scrapy的儲存**的目錄中就能設定時間定時多次執行。
最簡單的方法:直接使用timer類
import time
import os
while true:
os.system("scrapy crawl news")
time.sleep(86400) #每隔一天執行一次 24*60*60=86400s
或者,使用標準庫的sched模組
import sched
#初始化sched模組的scheduler類
#第乙個引數是乙個可以返回時間戳的函式,第二個引數可以在定時未到達之前阻塞。
schedule = sched.scheduler ( time.time, time.sleep )
#被週期性排程觸發的函式
deffunc
(): os.system("scrapy crawl news")
defperform1
(inc):
schedule.enter(inc,0,perform1,(inc,))
func() # 需要週期執行的函式
defmymain
(): schedule.enter(0,0,perform1,(86400,))
if __name__=="__main__":
mymain()
schedule.run() # 開始執行,直到計畫時間佇列變成空為止
關於cmd的實現方法,本人在單次執行爬蟲程式時使用的是
cmdline.execute("scrapy crawl news"
.split())
但可能因為cmdline是scrapy模組中自帶的,所以定時執行時只能執行一次就退出了。小夥伴有種方法是使用
import subprocess
subprocess.popen("scrapy crawl news")
她的程式執行正常可以定時多次執行,而我的卻直接退出了,改為
from subprocess import popen
subprocess.popen("scrapy crawl news")
才正常,不知道為什麼會這樣,如果有大神可以解釋原因還請指點。反正os.system
、subprocess.popen
都是pythoncmd的實現方法,可以根據需要選擇使用。
參考**:
python的sched模組和timer類
python sched模組學習
***深入學習python (六) 用sched來定時執行任務
python_cmd的各種實現方法及優劣(subprocess.popen, os.system和commands.getstatusoutput) - z…
如何基於windows實現python定時爬蟲
windows系統下使用任務計畫程式,linux下可以使用crontab命令新增自啟動計畫。這裡寫windows 10zljahrowr windows server 2016系統的設定方法。首先編寫乙個.bat指令碼。新建乙個txt,將下面三行 複製進去,main.py改成自己程式名字。保程式設計...
django apscheduler實現定時任務
準備 1.安裝 pip install django apscheduler django apscheduler,3.註冊後資料遷移 python manage.py migrate 遷移之後會生成兩張表 django apscheduler djangojob django apschedule...
Python while true實現爬蟲定時任務
記得以前的windows 任務定時是可以的正常使用的,今天試了下,發現不能正常使用了,任務計畫總是掛起。接下來記錄下python 爬蟲定時任務的幾種解決方法。今天是第一篇,後面會陸續更新。首先最容易的是while true死迴圈掛起,上 import osimport timeimport sysf...