def log_search(self, logfile, search_content, timeout=10):
import time
import subprocess
import select
import signal
import os
f = subprocess.Popen(['tail', '-F', logfile], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p = select.poll()
p.register(f.stdout)
try:
while timeout>0:
if p.poll(500): # millisecond timeout
while True:
line = f.stdout.readline()
if line:
if search_content in line:
return True
else: # no content read out
break
time.sleep(1)
timeout -= 1
else:
return False
finally:
print('unregister')
p.unregister(f.stdout)
print('kill pid')
os.kill(f.pid, signal.SIGKILL)