subprocess建立守護程序

2021-06-21 09:57:40 字數 1386 閱讀 1176

剛開始我在做爬蟲,爬蟲程式用python程式呼叫,但有時候爬蟲程式會死掉,掛了,所以程式會一直停留在那兒,該怎麼辦呢?我想可以建立乙個堅守程式,讓os.system()呼叫爬蟲程式能在一定時間內未執行完時,強制殺死,並重新開始,但根據結構化程式,順序執行沒辦法做到這一點,我知道肯定需要執行緒機制實現,網上找到了subprocess這個模組,它會建立乙個子程序,還有乙個類popen(),還是挺好用的。

#coding=utf-8

import subprocess

import time

#child=subprocess.popen(['ping','-t','5','www.google.com'])

pan=none

while pan!=0:

child=subprocess.popen('casperjs c:\\users\\minus\\desktop\\一次登入.js') #建立子程序

#print child.poll()

#print child.wait() #這裡不適合wait函式,因為這個函式會讓子程序進行完

#print child.returncode

time.sleep(10) #給10s的時間去執行子程序,時間內執行不了就重啟子程序

print 'parent'

#print child.returncode #獲取程序的返回值

print child.poll() #程序結束返回0 ,否則為nonoe

pan=child.poll()

if pan!=0: #程序沒結束

child.kill() #殺死這個程序 進入迴圈重新執行 child.terminate()這個也是可以的

關於subprocess模組的各個函式講解我這裡就不講了,可以參考

csdn文件

官方文件

上面的講解過程差不多,應該能了解了

返回結果是這樣的:

i've wait 2 seconds

start url:

parent

none

parent

none

i've wait 2 seconds

start url:

parent

none

parent

none

parent

none

parent

none

i've wait 2 seconds

start url:

parent

none

i've wait 2 seconds

start url:

Linux 守護程序建立

守護程序是在後台執行,不受使用者的控制 守護程序沒有任何存在的父程序。如果乙個程序想成為守護程序,有fork 建立 然後終止父程序,脫離資源。例子 void init daemon int pid,i pid fork if pid exit 0 結束父程序 else exit 1 失敗退出 是子程...

守護程序的建立

守護程序 守護程序又稱作精靈程序是乙個特殊的後台程序,他沒有控制終端,週期性的執行該執行的任務 我們可以看出守護程序是沒有tty控制終端的,並且它是沒有組長id的。建立乙個守護程序一般需要以下的步驟 1 umask 0 2 fork 乙個子程序,然後exit掉父程序,保證它不是組長程序。3 呼叫se...

建立守護式容器

一般的生產環境,肯定要用到守護式容器。根據書上的介紹 如下 docker run name test2 d ubuntu bin sh c while true do echo hello world sleep 10 done d 表示容器放在後台執行 輸出的結果是返回乙個容器id 用docker...